Advertencia: ¡Antes de sumergirse en el campo minado de administrar su propia Autoridad de Certificación, es posible que necesite estudiar las implicaciones de seguridad!
Pero si es necesario, sigue leyendo para obtener una CA rápida y sucia que te dará https://localhost/sin un mensaje de advertencia ...
Cree el siguiente archivo de texto:
# OpenSSL configuration for Root CA
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = Test Root CA
[ x509_ext ]
basicConstraints=critical,CA:true,pathlen:0
keyUsage=critical,keyCertSign,cRLSign
Guardar como root.cnfgenerar la solicitud con:
$ openssl req -x509 -new -keyout root.key -out root.cer -config root.cnf
Esto creará su certificado de CA raíz ( root.cer) y su clave privada de CA raíz ( root.key) que debe mantener en privado. Solicitará una contraseña para la clave privada: asegúrese de elegir una segura.
Ahora cree un archivo de configuración para el certificado del servidor:
# OpenSSL configuration for end-entity cert
[ req ]
prompt = no
string_mask = default
# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext
[ req_distinguished_name ]
# Note that the following are in 'reverse order' to what you'd expect to see.
countryName = gb
organizationName = Test
commonName = localhost
[ x509_ext ]
keyUsage=critical,digitalSignature,keyAgreement
subjectAltName = @alt_names
# Multiple Alternate Names are possible
[alt_names]
DNS.1 = localhost
# DNS.2 = altName.example.com
Guárdelo como server.cnfy genere la solicitud con:
openssl req -nodes -new -keyout server.key -out server.csr -config server.cnf
Lo anterior generará otra clave privada ( server.key) que debe proteger. En este caso, la clave no está protegida por contraseña, pero puede agregar una contraseña eliminando la -nodesopción.
Finalmente, firme la solicitud con su nueva CA raíz y extensiones del server.cnfarchivo (por conveniencia):
$ openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -set_serial 123 -out server.cer -extfile server.cnf -extensions x509_ext
Nota: elija cualquier número aleatorio para la -set_serialopción.
Le pedirá la contraseña que ingresó cuando generó la CA raíz.
Se server.cergenerará un certificado de servidor ( ).
Ahora, agregue el certificado de CA raíz ( root.cer) al almacén de confianza de Firefox y ejecute una prueba con:
$ sudo openssl s_server -key server.key -cert server.cer -accept 443 -www
Nota: Puede obtener errores si ya tiene un servidor en ejecución en el puerto 443. En ese caso, detenga el servidor en ejecución o cambie el número de puerto anterior a otro puerto no utilizado.
Cuando navega https://localhost(o https://localhost:<port>si cambió el número de puerto anterior) con Firefox, ahora no debería ver ninguna advertencia y se le presentará una lista de cifrados que su instalación de OpenSSL puede ofrecer.
Una vez que esté satisfecho con los resultados, agregue el server.keyy server.cera su servidor web y configúrelo en consecuencia.