¿Cómo creo un certificado SSL autofirmado?

64

He configurado SSL en mi servidor web, ahora necesito dos archivos:

  • un certificado
  • una clave de certificado

¿Cómo creo un certificado autofirmado para fines de prueba?

Stefano Palazzo
fuente

Respuestas:

93

Ubuntu, incluso el sabor 'mínimo', viene con el ssl-certpaquete preinstalado, lo que significa que no necesita hacer nada.

Los archivos que está buscando ya están en su sistema:

/etc/ssl/certs/ssl-cert-snakeoil.pem
/etc/ssl/private/ssl-cert-snakeoil.key


Avanzado:

Si por alguna razón necesita crear un certificado nuevo, puede ejecutar

sudo make-ssl-cert generate-default-snakeoil --force-overwrite 

Si desea cambiar la fecha de vencimiento de su certificado, puede manipular el script make-ssl-cert en /usr/sbin/make-ssl-cert. Alrededor de 124 hay una línea similar a esta:

openssl req -config $TMPFILE -new -x509 -nodes \ 

Donde puede cambiar la fecha de vencimiento agregando el -daysargumento:

openssl req -config $TMPFILE -new -days 365 -x509 -nodes \ 

Se pueden encontrar más opciones en la página del manual dereq .

Stefano Palazzo
fuente
10
ubuntu-server 12.04 (imagen de la nube AMI) no tiene instalado el certificado SSL por defecto. Pero una vez que ssl-cert esté instalado, /etc/ssl/certs/ssl-cert-snakeoil.pem estará disponible automáticamente.
Stann
make-ssl-cert toma la longitud de la clave (y otras configuraciones) para usar /usr/share/ssl-cert/ssleay.cnf.
Tim Smith
Al intentar probar un sitio web en una instancia de VM local vagabunda, quería que Google Chrome actuara como si fuera un certificado totalmente normal. Primero tuve que configurar el nombre de host de la VM para que coincida con la url de prueba (por ejemplo www.test.mydomain.com) usando el hostnamecomando en la CLI de VM. Luego, vuelva a generar la clave como sugiere, con --force-overwriteel Nombre común (CN) de la clave y luego coincida con la URL de prueba. Finalmente, en la máquina host, la instalación de la clave como una Autoridad de certificación raíz de confianza (en Configuración / Avanzado de Chrome) me dio la codiciada barra de direcciones verde.
Buttle Butkus
1
mi certificado de 9 años dejó de funcionar con mi actualización a debian 10, ¡así que el make-ssl-certcomando me salvó el día!
Jayen
23

Como ya se mencionó, Ubuntu Server viene con las herramientas necesarias. Dependiendo de la versión de su servidor, tendrá que buscar la documentación específica . Trataré de resumir el proceso de generación de certificados autofirmados del LTS actual (12.04) .

Primero genera las claves para la Solicitud de firma de certificado (CSR):

openssl genrsa -des3 -out server.key 2048

Depende de usted ingresar una frase de contraseña o no. Si lo hace, cada vez que (re) inicie un servicio con ese certificado, deberá proporcionar la frase de contraseña. De nuevo, puede crear una clave "insegura" sin una frase de contraseña segura:

openssl rsa -in server.key -out server.key.insecure
# shuffle the key names to continue without passphrases
mv server.key server.key.secure
mv server.key.insecure server.key

Y ahora creará la CSR a partir de la clave. Con la CSR y la clave se puede generar un certificado autofirmado:

openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

El último paso consiste en instalar el certificado y la clave, en Debian / Ubuntu, generalmente en /etc/ssl:

sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private

Y finalmente, las aplicaciones que utilizan el certificado / clave deben configurarse en consecuencia.

nietonfir
fuente