Sea por seguridad o imposición de Google los sitios con certificado SSL son ya indispensables. Un entorno de desarrollo bajo HTTPS no suele ser necesario, aún así en cualquier caso, nos ayudará a asegurarnos de que el sitio está programado adecuadamente para trabajar bajo el protocolo HTTPS.
Generar el certificado
Generar la llave
Crear una carpeta accesible llamada por ejemplo ssl
en nuestra carpeta de usuario.
$ mkdir ssl
$ cd ssl
$ openssl genrsa -des3 -out serverSSL.key 2048
Te pedirá que añadas una contraseña.
Generar CSR
$ openssl req -new -key serverSSL.key -out serverSSL.csr
- Entra la contraseña previamente creada.
- Sigue el asistente y rellena los campos con lo que quieras, pero presta atención a los siguientes:
- Common Name El dominio que quieres usar, por ejemplo: localhost, ejemplo.com, server.dev o *.server.dev
- Challenge pass: Lo puedes dejar en blanco.
Generar el certificado
$ openssl x509 -req -days 1825 -in serverSSL.csr -signkey serverSSL.key -out serverSSL.crt
Introduce nuevamente la contraseña.
Configurar Apache
Habilitar el módulo SSL de apache
$ sudo a2enmod ssl
Ejemplo Virtualhost
$ cd /etc/apache2/sites-enabled
$ touch server.dev.conf
<VirtualHost *:80>
ServerName server.dev
ServerAlias www.server.dev
Redirect permanent / https://server.dev
</VirtualHost>
<VirtualHost *:443>
ServerName server.dev
ServerAlias www.server.dev
DocumentRoot /var/www/www.server.dev
<Directory /var/www/www.server.dev/public>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
## Logging
ErrorLog /var/log/apache2/www.server.dev.log
LogLevel warn
ServerSignature Off
CustomLog /var/log/apache2/www.server.dev.log combined
## SSL
SSLEngine on
SSLCertificateFile /home/vagrant/ssl/serverSSL.crt
SSLCertificateKeyFile /home/vagrant/ssl/serverSSL.key
</VirtualHost>
Habilitar el nuevo Virtualhost y reinciar el servidor Apache.
$ sudo a2ensite server.dev.conf
$ sudo service apache2 restart
Cada vez que reiniciamos Apache nos pide la contraseña... Vamos a quitársela.
openssl rsa -in serverSSL.key -out serverSSL-nopass.key
Tras escribir la contraseña habremos creado una key nueva que deberemos substituir en el VirtualHost
SSLCertificateKeyFile /home/vagrant/ssl/serverSSL-nopass.key
Desde el navegador vamos a https://www.server.dev y nos aparecerá una alerta de seguridad porque es un certificado auto-firmado. Aceptamos la excepción de seguridad. Et voilà! Ya tenemos nuestro sitio funcionando bajo SSL en un entorno de desarrollo local.