Certificado SSL Wildcard (multi-subdominio) en Apache con OpenSSL

Hoy en mi empresa me ha tocado comprar e instalar un certificado multi-subdominio, ya que hace tiempo les dije que debíamos proteger mediante SSL todas las áreas donde haya formularios o datos de clientes. Además, como me tocó llevar la migración de los servidores a Amazon Web Services, tengo la oportunidad de ir mejorando cosas que veo que no están correctas e ir puliéndolas.

Antes, tan solo teníamos un certificado para un subdominio en concreto, ya que teníamos una pasarela bancaria y era requisito indispensable que el banco nos notificase el resultado de la operación de compra a través de una conexión SSL segura con certificado válido (nada de certificados auto-firmados).

SSL-Certificate

Así que durante la mañana me ha tocado “googlear” un poco para encontrar algo barato ( que mi jefe es muy “agarrao” 😉 ) y tras decidirnos por RapidSSL me ha tocado crear la “Private Key” y el “Certificate Request” basado en dicha llave y algunos datos más.

Antes de empezar y tras el “escandalazo” ocurrido hace unas semanas conocido como “heartbleed“, lo primero que hecho ha sido actualizar OpenSSL para tener una versión parcheada contra este fallo. Los pasos a seguir en Ubuntu (entiendo que OpenSSL ya estaba instalado):

sudo apt-get update
sudo apt-get upgrade

Y por si acaso.

sudo apt-get dist-upgrade

Recordad que es una buena práctica ir actualizando el sistema regularmente para ir parcheando vulnerabilidades.

Tras actualizar el servidor ahora toca crear la “Private Key” y el “Certificate Request” y para crear estos dos archivos se puede hacer con una sola instrucción:

openssl req -new -newkey rsa:2048 -nodes -out wildcard_midominio_com_request.csr -keyout wildcard_midominio_com_private.key -subj "/C=JP/ST=MiProvincia/L=MiCiudad/O=MiEmpresa/OU=MiDepartamento/CN=*.midominio.com"

En CN (Common Name) veréis que he puesto un asterisco delante del dominio. Esto debe ser así para los certificados de tipo Wildcard, ya que especifica que el certificado que crearemos será válido para [cualquiernombre].midominio.com. en el caso de certificados simples bastará con especificar el dominio o subdominio directamente sin asterisco.

Lo de C=JP es por Japón, pero podéis substituirlo por C=ES o cualquier código de país válido.

Es importante que utiliceis datos reales ya que el certificado “certifica” que es vuestro site.

images

Una vez creados los dos archivos, solo deberéis utilizar el “Certificate Request” para que la entidad certificadora pueda crear el certificado y firmarlo para vosotros. Vuestra “Private Key” no debéis compartirla con nadie. Usualmente, durante el proceso de compra del certificado, deberéis pegar el contenido de dicho archivo en un textarea. El contenido es parecido a:

-----BEGIN CERTIFICATE REQUEST-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE REQUEST-----

Tras la compra del certificado a la Entidad Certificadora, y tras verificar que sois los dueños del dominio, os enviarán el certificado “root” y un certificado intermedio. Os lo pueden enviar como archivos pero también os pueden pegar el contenido de estos como texto en el e-mail que recibáis.

Ambos empiezan por  “—–BEGIN CERTIFICATE—–“, por lo que en el propio e-mail os indicaran cual es cual.

Bien, ahora que los tenemos en nuestro poder ya solo nos queda copiarlos a la carpeta del servidor donde teníamos la “Private Key” y configurar Apache2 para que los utilice. El “Certificate Request” ya no lo utilizaremos más pero no está de más guardarlo.

Para activar estos certificados en una “VirtualHost” de Apache2 solo tenemos que poner lo siguiente:

SSLEngine on
SSLCertificateFile /ruta/a/tus/archivos/wildcard_midominio_com_cert.cert # Aquí el "Root Certificate"
SSLCertificateKeyFile /ruta/a/tus/archivos/wildcard_midominio_com_private.key # Aquí la "Private Key"
SSLCertificateChainFile /ruta/a/tus/archivos/wildcard_midominio_com_chain.cert # Aquí el "Intermediate Certificate"

Tras esto solo nos queda testear la configuración de Apache2 y reiniciarlo para que los cambios surjan efecto.

Por último recordad hacer una copia de seguridad de todos los certificados y llaves por si acaso algo pasara en el futuro.

Si te ha gustado y quieres compartir esta página..