Crear un certificado de Apache autofirmado

( sistemas / linux / openssl )

En muchos de nuestros proyectos, sobre todo personales, necesitamos tener una web segura con SSL pero no queremos pagar un certificados porque no lo necesitamos, en tal caso lo que podemos hacer un crearnos un certificado auto-firmado, esto son lo pasos a seguir:

A mi me gusta crear un directorio dentro de la estructura del apache pero puede estar en cualquier sitio incluso en los certificados del sistema "/etc/ssl/certs":

# mkdir /etc/apache2/certs

# cd /etc/apache2/certs

Creamos un certificado ráiz, a mi me gusta ponerle el nombre del dominio y crearlo con 2048 bits pero con 1024 es más que suficiente:

# openssl genrsa -out www.dominio.com.key 2048

Generamos una petición de firma del certificado:

# openssl req -new -key www.dominio.com.key -out www.dominio.com.csr

Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Provincia
Locality Name (eg, city) []:Ciudad
Organization Name (eg, company) [Internet Widgits Pty Ltd]:nombre de la empresa
Organizational Unit Name (eg, section) []:Sistemas
Common Name (eg, YOUR name) []:www.dominio.com
Email Address []:el email del responsable del apache o web

A challenge password []: NO METER NADA
An optional company name []: NO METER NADA

Generamos un Certificado Autofirmado

# openssl x509 -req -days 3650 -in www.dominio.com.csr -signkey www.dominio.com.key -out www.dominio.com.crt

Luego en la configuración del apache dentro del VirtualHost debemos añadir estas líneas:

SSLEngine on
SSLCertificateFile /etc/apache2/certs/www.dominio.com.crt
SSLCertificateKeyFile /etc/apache2/certs/www.dominio.com.key

Para ver las fechas de un certificado (ya sea para comprobar que esté correcto o hasta cuando es válido:

# openssl x509 -noout -dates -in server.crt 

notBefore=Mar 21 16:04:10 2010 GMT
notAfter=Mar 21 16:04:09 2020 GMT
Modificado el 18 Abril, 2015
Creado el 7 septiembre, 2010
   

Compartiendo conocimiento desde 1995 - I.M.D. I.M.D.