Crear un certificado SSL autofirmado e implementarlo en un servidor Apache en Debian 8
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
Además vamos a habilitar un fichero de configuración que viene por defecto y que luego modificaremos.
$ a2ensite default-ssl
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.
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í.
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:
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.
Pingback: Bonus Pack 2018: Recopilación de artículos de sospedia.net – Jose Blanco Vega