Crear un certificado para una CA reconocida
Si queremos que, por ejemplo un navegador, acepte directamente nuestro certificado tenemos que tenerlo firmado por una autoridad certificadora reconocida.
openssl req \ -new -newkey rsa:1024 -nodes \ -keyout cert.key -out newcert.req |
Y tendremos la llave privada en el fichero cert.key y el certificado en newcert.req
Basta usar el ejemplo anterior y generar una pareja de ficheros, uno con la llave privada, cert.key y otro con la llave pública, newcert.req. Éste último es el fichero que tendrá que ser firmado por la autoridad certificadora.
No obstante, nosotros mismos, como vimos anteriormente, vamos a constituir en una autoridad certificadora (no reconocida), y vamos a firmar peticiones de certificados.
También tendrá que pensar si le interesa, que la lalve privada vaya protegida con contraseña o no. En el caso anterior no lleva contraseña porque incluye la opción -nodes. El fichero de llave privada es cert.key y la solicitud de certificado estará en newcert.req.
En el siguiente ejemplo muestra como crear una solicitud de certificado con llave privada con contraseña.
openssl req \ -new -newkey rsa:1024 -des3 \ -keyout cert.key -out newcert.req |
Solicitud de certificado con llave privada existente
Y si queremos utilizar una llave privada existente, también lo podemos hacer como muestra el siguiente ejemplo:
openssl req -new -key cert.key -out newcert.req |
Extender la caducidad del certificado raíz de una CA
Podemos obtener un nuevo certificado raíz con un nuevo periodo de validez. Supomemos que el certificado raíz es cacert.pem y que la llave privada es key.pem:
openssl x509 -in cacert.pem -days 3650 \ -out nuevo-cacert.pem \ -signkey key.pem |
y ya sólo nos quedaría sustituir el anterior cacert.pem por el nuevo que hemos abtenido. En realidad lo que hemos hecho es obtener un certificado autofirmado a partir de una llave privada existente, lo que pone de relieve la importancia de tener segura la llave privada.
Firmar solicitudes de certificado
Firmar una solicitud de certificado
openssl ca -in req.pem -out newcert.pem |
Firmar una solicitud de certificado usando extensiones de la CA
openssl ca -in req.pem -extensions v3_ca -out newcert.pem |
Generar un CRL (Certificate Revocation List)
openssl ca -gencrl -out crl.pem |
Firmar varias solicitudes
openssl ca -infiles req1.pem req2.pem req3.pem |
Firmar una petición de certificado usando un certificado CA anterior y añadir extensiones de usuario
openssl x509 -req -in req.pem \ -extfile openssl.cnf -extensions v3_usr \ -CA cacert.pem -CAkey key.pem -CAcreateserial |