Instalar un certificado ssl

Instalar y configurar un certificado SSL en Apache y Linux

Explicado de una forma muy breve el protocolo SSL (Secure Sockets Layer) nos permite establecer una conexión cifrada entre cliente y servidor, a través conexiones HTTPS, para que funcione será necesario un certificado SSL, por lo general estos certificados se componen de tres archivos:

  • archivo.key – fichero que contiene la Clave Privada que se ha usado para este certificado. Sólo Apache debe de tener acceso.
  • archivo.crt – este fichero contiene el Certificado SSL que vamos a instalar en nuestro servidor web.
  • archivo-ca.crt – por último el fichero con el certificado firmado por la autoridad certificadora (CA).

Instalar el certificado

La instalación básicamente consiste en copiar los ficheros del certificado en el servidor, con los permisos adecuados para que solo Apache pueda tener acceso a ellos.

En el caso de Ubuntu y Centos, la ubicación donde tenemos que copiar los archivos es:

  • archivo.key dentro de /etc/ssl/private/
  • archivo.crt dentro de /etc/ssl/certs
  • archivo-ca.crt dentro de /etc/ssl/certs

Configurar Apache para usar el certificado

Una vez copiados los archivos y para que Apache pueda utilizarlos tenemos  que editar la configuración de los virtual hosts para indicarle donde se ubican.

El procedimiento es el mismo si en lugar de instalar un nuevo certificado ssl lo que queremos es renovar uno ya existente.

El fichero de configuración del virtual host puede variar según la distribución Linux, en este caso es Centos 8 y el fichero se ubica dentro de /etc/apache2/sites-availables/default-ssl.conf

<VirtualHost  _default_:443 >

  DocumentRoot /var/www/html

  ServerName www.dominio.com
  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/archivo.crt
  SSLCertificateKeyFile /etc/ssl/private/archivo.key
  SSLCACertificateFile /etc/ssl/certs/archivo-ca.crt

Comprobar si nuestro sitio web está habilitado

Podemos asegurarnos que los virtual host están habilitados, si listando el directorio /etc/apache2/sites-enabled, encontramos un enlace al fichero default-ssl.conf, de lo contrario tendremos que habilarlo.

default-ssl.conf -> ../sites-available/default-ssl.conf

Habilitar virtual host

A continuación dos métodos de realizar la misma tarea:

Método 1. Ejecutar el comando siguiente que se encargara de crear el enlace correspondientes dentro del directorio sites-enabled.

s2ensite default-ssl

Método 2. Crear el enlace nosotros mismos ejecutando los siguientes comandos:

ln –s ../sites-availables/default-ssl.conf

Comprobar si mod_ssl está habilitado

Para saber si el módulo ssl está habilitado solo tendremos que asegurarnos de que se encuentra enlazado dentro de /etc/apache2/mods-enabled.

Podremos ver todos los módulos disponibles en Apache listando el directorio /etc/apache2/mods-availables.

Habilitar mod_ssl

Igual que para los virtual host voy a explicar dos métodos para realizar la operación:

Método 1. Ejecutar el comando siguiente que se encargara de crear los enlaces correspondientes dentro del directorio mods-enabled.

s2enmod ssl

Método 2. Crear los enlaces nosotros mismos ejecutando los siguientes comandos:

cd /etc/apache2/mods-enabled
ln -s ../mods-available/ssl.conf
ln -s ../mods-available/ssl.load

Ya solo nos queda reiniciar el servidor Apache o bien recargar la nueva configuración para que funcione.

  1. Podemos recargar la configuración sin necesidad de reiniciar el servidor usando el comando reload
/etc/init.d/apache2 reload
service apache2 reload
  1. Reiniciar el servidor
/etc/init.d/apache2 restart
service apache2 restart

Otros comandos que pueden ser de gran utilidad en caso de ser necesarios

Si reiniciamos o recargamos el servidor apache y algo falla, puede ser de gran ayuda el comando.

systemctl status apache2 service

Este comando nos proporciona información sobre el estado de los servicios de Apache.

Si nuestro certificado aún no funciona vamos a comprobar que el puerto 443 (puerto por defecto para ssl) está escuchando (listen):

netstat -an|grep 443

Hecho, ya deberiamos poder acceder de forma segura a nuestro sitio web a través de httpss.

Comentarios y opiniones

Puede que tarde en responder, se paciente.

*
*