Crear un certificado SSL autofirmado no es difícil con OpenSSL. Este tipo de certificados SSL son perfectos para pruebas, entornos de desarrollo o cualquier otra cosa que requiera SSL, pero no necesariamente tiene que ser un certificado SSL de confianza .
Si usa esto en una configuración de Nginx o Apache, sus visitantes verán primero un gran mensaje de advertencia rojo ” Su conexión no es privada “, antes de que puedan navegar. Esto no es para producción, solo para probar.
Para generar un certificado SSL autofirmado en un solo comando openssl ejecute lo siguiente en su terminal.
openssl req -x509 -sha256 -newkey rsa: 2048 -keyout certificate.key -out certificate.crt -days 1024 -nodes
Se realizaran varias preguntas, lo único que realmente importa es la pregunta de nombre común , que se utilizará como el nombre de host/nombre de DNS para el que está hecho el certificado SSL autofirmado. (Aunque: incluso con un Nombre común válido, sigue siendo un certificado SSL autofirmado y los navegadores aún no lo verán como no válido ).
Aquí está el resultado de ese comando.
Generating a 2048 bit RSA private key .............................+++ ..............+++ writing new private key to 'certificate.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:BE State or Province Name (full name) [Some-State]:Antwerp Locality Name (eg, city) []:Antwerp Organization Name (eg, company) [Internet Widgits Pty Ltd]:Some Organization Ltd Organizational Unit Name (eg, section) []:IT Department Common Name (e.g. server FQDN or YOUR name) []: your.domain.tld Email Address []:info@yourdomain.tld
Si no desea completar esas preguntas todas las veces, puede ejecutar un solo comando con el Nombre común como argumento de línea de comando. Generará el certificado SSL autofirmado directamente, sin molestarte por preguntas como Country Name, Organization, …
openssl req -x509 -sha256 -newkey rsa: 2048 -keyout certificate.key -out certificate.crt -days 1024 -nodes -subj '/CN=my.domain.tld' Generando una clave privada RSA de 2048 bits ..... +++ ........................... +++ escribiendo nueva clave privada para 'certificate.key' -----
El resultado con ambos openssl comandos será de 2 archivos nuevos en su directorio de trabajo actual.
ls -alh -rw-r - r-- 1 mattias 1.7K certificate.crt -rw-r - r-- 1 mattias 1.6K certificado.key
Puede usar el certificate.key como la clave para sus configuraciones de SSL. No tiene una contraseña asociada, esa es la opcion -nodes (No cifrado DES) para ejecutar el comando openssl. Si desea una contraseña en su clave privada, elimine esa opción y vuelva a ejecutar el comando openssl.
cat certificate.key ----- BEGIN RSA PRIVATE KEY ----- MIIEowIBAAKCAQEA4Ez4L6n8KNDJvBNlu2kqIiTNXM7PiyfD8OPSg665OXf1qaaA ... P2JYe3EN8sVlUG7bx1b0D78UQA + KMkwuWNNaQyerSNc8QMC63DT5 ----- END RSA PRIVATE KEY -----
El certificate.crt contiene su archivo de certificado, la parte “pública” de su certificado.
cat certificate.crt ----- BEGIN CERTIFICATE ----- MIIE9zCCA9 + gAwIBAgIJAKR + VA + yc2CzMA0GCSqGSIb3DQEBBQUAMIGtMQswCQYD ... C4RviEJyE4xdmwsjzfkc3nJTJfFyT / uo + Cx + ----- FIN CERTIFICADO -----
Ahora tienes un certificado SSL autofirmado y una clave privada que puedes usar para las configuraciones de su servidor.