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.cnf
generar 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.cnf
y 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 -nodes
opción.
Finalmente, firme la solicitud con su nueva CA raíz y extensiones del server.cnf
archivo (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_serial
opción.
Le pedirá la contraseña que ingresó cuando generó la CA raíz.
Se server.cer
generará 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.key
y server.cer
a su servidor web y configúrelo en consecuencia.