Crear un certificado SSL autofirmado e implementarlo en un servidor Apache en Debian 8

Logo de Debian

Logo Debian

Introducción

En este tutorial vamos a instalar y configurar un servidor Apache securizado con un certificado SSL autofirmado. Es decir, vamos a hacer que nuestro servidor Apache use el protocolo HTTPS para una navegación más segura. Más información sobre el protocolo HTTPS en nuestro artículo Tengo una contraseña segura, ¿Y qué?

Un certificado SSL sirve para garantizar que nuestra página web es confiable y un lugar seguro donde meter datos como contraseñas y nombres de usuarios ya que SSL es un protocolo de seguridad que establece una conexión segura entre cliente y servidor.

Debemos tener en cuenta que un certificado SSL autofirmado será válido para hacer pruebas pero nunca lo debemos utilizar para una página web funcional ya que nuestro certificado no tendrá validez para los usuarios ya que no lo ha firmado una entidad registrada ni reconocida que nos garantice que la página es confiable. Si queremos un  certificado para nuestra página web tendremos que pagar por él.

Para este tutorial vamos a usar Apache, la suite openssl y un servidor Debian.


Instalar Apache

Apache será nuestro HTTPS server, pero antes de todo actualizaremos nuestro sistema y actualizaremos a la versión más reciente de openssl (ya que suele venir instalado).
$  apt-get update
$  apt-get upgrade openssl

Y luego instalaremos Apache con el siguiente comando:
$  apt-get install apache2

Off topic: Instala tu sistema LAMP


Habilitar modulo SSL

A continuación vamos a habilitar el modulo SSL con el siguiente comando:
$ a2enmod ssl

1-a2enmod-ssl-certificado-ssl

Además vamos a habilitar un fichero de configuración que viene por defecto y que luego modificaremos.
$ a2ensite default-ssl

2-a2ensite-default-ssl-apache-debian

Y para finalizar ejecutaremos el comando que nos indica para activar la nueva configuración.
$ service apache2 reload


Crear certificado SSL autofirmado

En primer lugar vamos a crear una carpeta donde guardaremos nuestros certificados.
$ mkdir /etc/apache2/sslcert
Y a continuación teclearemos este comando para crear el certificado y la clave de éste.
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/sslcert/apache.key -out /etc/apache2/sslcert/apache.crt

Después de ejecutar este comando nos empezarán a pedir datos de una manera interactiva, tenemos que ir contestando como nos convenga. Tenemos que tener cuidado cuando pregunta Common Name  ya que tendremos que poner el nombre de nuestro dominio o la IP de nuestro dominio. En nuestro caso será 192.168.1.100.

3-certificado-autofimardo-ssl

Para finalizar le daremos permisos al certificado y a la clave.
$ chmod 600 /etc/apache2/sslcert/*

Y ya tendremos el certificado y su clave preparados para que los use apache.


Configurar apache para que use SSL

Ahora vamos a configurar apache para que use el protocolo https por defecto usando nuestro certificado y clave. Para ello vamos a editar el siguiente fichero de configuración de apache.
$ nano /etc/apache2/sites-enabled/default-ssl.conf

Tenemos que fijarnos en la etiqueta <VirtualHost _default_:443> justo al principio y añadir lo siguiente: ServerName nombreservidor.com:443. En nuestro caso se quedará así.

4-virtualhost-certificado-autofirmado-ssl

Después más abajo tenemos que localizar las líneas que ponen SSLCertificateFile y SSLCertificateKeyFile y poner la ruta que corresponde a cada documento. En nuestro caso el resultado será el siguiente:

5-ruta-ssl-certificado

Apretamos a CTRL + O para guardar y  CTRL + X para salir.
A continuación reiniciaremos apache para que los cambios realizados hagan efecto.
$ service apache2 reload
Y ya tendremos nuestro certificado SSL autofirmado funcionando en nuestro servidor apache.


Comprobar que Apache funciona mediante SSL

Para comprobar que funciona vamos a utilizar otro equipo con Linux y vamos a establecer una conexión https a nuestro servidor desde la terminal. Ejecutaremos el siguiente comando:
$ openssl s_client -connect IP_de_tu_servidor:443
Y si funciona podremos ver que se nos mostrará por pantalla información sobre nuestro certificado y que el SSL funciona.

6-check-ssl-funciona-autofirmado

One comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.