Crear un certificado digital autofirmado y usarlo junto con Apache

Para continuar el tema que presentamos en nuestro post anterior, en esta oportunidad explicaremos cómo crear un certificado digital autofirmado. Al usarlo junto con Apache, tendremos como resultado un host virtual seguro.

¿Cómo crear un certificado digital autofirmado?

Para cifrar la transmisión de datos y garantizar que hemos establecido una comunicación con el servidor correcto y no con un impostor, se utiliza un certificado y una clave. Para propósitos prácticos, utilizaremos un certificado autofirmado. Sin embargo, debemos clarar que esa opción no es aconsejable para sitios web de Internet ya que no genera confianza que sea yo mismo quien garantice mi propia autoridad; aún así es útil para hacer pruebas o dentro de una red pequeña.

Según lo indicamos en el post anterior, utilizaremos el directorio /etc/apache2/ssl para almacenar el certificado y la clave pero sin olvidarnos de crearlo primero:

mkdir /etc/apache2/ssl

El siguiente comando nos permitirá crear un certificado digital autofirmado que sea válido por 365 días. Para ver el significado de las demás opciones y argumentos podemos consultar el man page de openssl.

Se nos pedirá ingresar los siguientes datos (podemos poner valores ficticios por el momento):

  • Código de país (AR para Argentina)
  • Provincia (SJ para San Juan)
  • Localidad (San Juan)
  • Nombre de la organización («Linuxero Piola S.A.«)
  • Unidad organizacional (dejar en blanco presionando Enter)
  • Nombre completo del servidor (aguantecla.com) o nombre del responsable (Carrera Linux Argentina)
  • Dirección de correo electrónico de contacto (dejar en blanco presionando Enter)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Una vez que hayamos creado el certificado y la clave, hagamos que sean propiedad de www-data (o del usuario apache si estamos utilizando CentOS) y cambiemos los permisos de acceso a 600:

cd /etc/apache2/ssl
chown www-data:www-data apache.key apache.crt
chmod 600 apache*

Después habilitemos el módulo SSL y reiniciemos Apache:

a2enmod ssl
systemctl restart apache2

Verificar la configuración

En primer lugar, apuntemos nuestro navegador a la dirección https://aguantecla.com. A continuación, se nos advertirá que la conexión no es segura porque el emisor del certificado es desconocido. Finalmente, confirmaremos que deseamos añadir una excepción y veremos los detalles del certificado que el sitio envió a nuestro navegador. En la Fig. 1 podemos verificar que se trata de los mismos que ingresamos anteriormente:

Resultado de crear un certificado digital autofirmado y usarlo junto con Apache
Figura 1 – Resultado de crear un certificado digital autofirmado y usarlo junto con Apache

¡Felicitaciones! Acabamos de crear un host virtual seguro para nuestro uso.