Apache SSL Localhost

Sea por seguridad o imposición de Google los sitios con certificado SSL son indispensables. Un entorno de desarrollo bajo HTTPS no suele ser necesario, aún así en cualquier caso, nos ayudará a cerciorarnos que el sitio esta programado adecuadamente para trabajar bajo el protocolo HTTPS.

Generar el certificado

Generar la llave

Crear una carpeta accesible llamada por ejemplo ssl en nuestra home.

$ mkdir ssl
$ cd ssl
$ openssl genrsa -des3 -out serverSSL.key 2048

Te pedirá que añadas una contraseña. Anótala en algún lugar, porque la vas a necesitar.

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 pon 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

Habilita el módulo SSL de Apache.

$ sudo a2enmod ssl

Ejemplo Virtualhost

$ cd /etc/apache2/sites-available
$ 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>

Habilita el nuevo virtualhost y reincia el servidor Apache.

$ sudo a2ensite server.dev.conf
$ sudo service apache2 restart

Desde el navegador vamos a https://www.server.dev y nos aparecerá una alerta de suguridad 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.

Consejo

  • Si buscas un libro de referencia en castellano sobre Apache tal vez te puede interesar Apache de Rich Bowen publicado por Anaya Multimedia/O´Reilly que puedes comprar en Amazon. Es algo caro, pero te aseguro que vale la pena.
  • También puedes usar 1Password para recordar y guardar todas tus contraseñas y mucho más, por sólo 4€ al mes.

Comments

gmoya
$ cd /etc/apache2/sites-enabled En éste paso en realidad es en $ cd /etc/apache2/sites-available
Jordi
Merci, corregido, no se en que estaria pensando. Saludos.
Alex
Molt útil i clar, merci!