Apache SSL Localhost

  • 2 de junio de 2021

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.

Deja tu comentario

Presiona ESC para cerrar