Para poder configurar nuestro servidor web Apache con SSL lo primero que vamos a hacer es obtener los cerficados Let's Encrypt.
Descargamos y descomprimimos la última versión de la utilidadletsencrypt-win-simple.v1.9.8.4.zip
Dentro una ventana de comandos con permisos de administrador ejecutamos letsencrypt.exe y nos aparece el siguiente menú:
Elegimos la primera opción M y nos aparece el siguiente menú:
Ahora elegimos la opción 4 para introducir el nombre de nuestro servidor manualmente (www.ejemplo.com):
En este apartado es posible introducir varios nombres de dominio de virtual hosts configurados en tu servidor pero yo no he conseguido que instale en todos ellos el fichero de comprobación de la propiedad del dominio, por ello he realizado estos pasos de instalación para cada virtual host.
En el siguiente menú nos pregunta que procedimiento utilizar para la instalación del fichero de comprobación de propiedad del dominio.
Como se puede apreciar elegimos la opción 3 en la que proporcionamos la ruta de nuestro DocumentRoot según lo tenemos configurado en Apache.
Seguidamente nos pregunta si se realiza la copia del fichero de comprobación de propiedad del dominio y decimos que sí.
Una vez realizado esto la utilidad letsencrypt-win-simple ya está en disposición de comprobar que vamos a instalar el certificado en un servidor del que somos propietarios por ello pregunta si queremos comenzar el proceso de instalación (más bien creación) de certificados.
Elegimos la opción 2 pues no necesitamos ejecutar acciones adicionales mediante un script, tal y como se ve en el pantallazo de arriba.
Ya finalizando podemos ver estos mensajes de confirmación de la creación del certificado y la creación de la tarea programada para la renovación.
Podemos ver los ficheros de certificado que se han creado en la carpeta:
C:\ProgramData\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org
Seguidamente vamos a configurar Apache HTTPD Server para que utilice los certificados.
En el fichero httpd.conf tenemos que realizar las siguientes modificaciones:
- Añadir un listener para el puerto 443 de HTTPS
El fichero donde tenemos configurados los virtual hosts httpd-vhosts.conf quedará de esta manera para cada uno de los virtual hosts:
<VirtualHost *:80>
ServerAdmin miemail@miserver.es
DocumentRoot "C:/miWebRoot"
ServerName www.midominio.es
RewriteEngine On
# Redirect to the HTTPS site
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*)$ https://www.midominio.es/$1 [NE,L,R=301]
</VirtualHost>
<VirtualHost *:443>
ServerAdmin miemail@miserver.es
DocumentRoot "C:/miWebRoot"
ServerName www.midominio.es
RewriteEngine On
# Redirect to the correct domain name
RewriteCond %{HTTP_HOST} !^www.midominio.es$ [NC]
RewriteRule ^/?(.*)$ https://www.midominio.es/$1 [NE,L,R=301]
SSLEngine on
SSLCertificateFile "C:/ProgramData/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/www.midominio.es-crt.pem"
SSLCertificateKeyFile "C:/ProgramData/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/www.midominio.es-key.pem"
SSLCertificateChainFile "C:/ProgramData/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/ca-VALORESHEXADECIMALES-crt.pem"
</VirtualHost>
Como vemos además de los certificados hemos añadido redirecciones desde el puerto 80 al 443 por lo que todas las url no seguras funcionarán siendo redirigidas a su equivalente en HTTPS.
En caso de tener conectores AJP para servir páginas desde TOMCAT copiaríamos la configuración de AJP al virtualhost con el puerto 443 y nos seguirá funcionando correctamente también con páginas seguras.
Si todo es correcto ya tenemos nuestro servidor sirviendo páginas en HTTPS y solo nos quedaría estar atentos a que las renovaciones automáticas de los certificados se realicen correctamente.