Crear un certificado de Apache autofirmado
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