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