Instalación SSL en Servidores Web

Buenas a todos, en este post vamos a ver como instalar un certificado de seguridad SSL en nuestro sitio web con una entidad certificadora (CA), así podremos acceder a nuestros sitios web de manera segura y cifrada.

En nuestro caso la instalación la realizaremos en Debian Jessie con Apache2 y Nginx, y en Windows Server 2012 con IIS.


En Debian Jessie con Apache2

En esta ocasión usaremos la entidad certificadora «Let’s Encrypt Authority X3» la cuál nos ofrece un certificado gratis y libre.

Lo primero que haremos sera preparar el entorno, para ello:

  • Instalamos apache2:
sudo apt-get install apache2
  • Importamos el sitio web a /var/www y le asignamos como propietario al usuario y grupo «www-data».
  • Creamos el sitio web copiando el sitio por defecto siendo «root»:
cd /etc/apache2/sites-available
cp 000-default.conf sitionuevo.conf
  • Configuramos el nuevo sitio editando el archivo que hemos copiado siendo «root» y lo dejamos de la siguiente manera:
 nano /etc/apache2/sites-available/sitionuevo.conf
<VirtualHost *:443>
        ...
        ServerName www.sitinuevo.com
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/sitionuevo
        ...
</VirtualHost>
  • Activamos el sitio y recargamos Apache2 siendo «root»:
a2ensite sitionuevo.conf
systemctl reload apache2

Necesitaremos unos requisitos para seguir con el proceso:

  • Tener un dominio en Internet (ya sea pagado o gratis), podemos usar DOT TK para ello. Y registramos el nombre de nuestro sitio.
  • Abrimos el puerto 80 y 443 en nuestro router.

Estos requisitos son necesarios si queremos instalar el certificado en un servidor local.

Ahora clonaremos el depósito de «Let’s Encrypt» en nuestro servidor el cuál nos realizará la instalación del certificado, para ello:

  • Instalamos «git» para poder clonar el deposito de «Let’s Encrypt»:
sudo apt-get install git
git clone https://github.com/letsencrypt/letsencrypt.git
  • Ejecutamos lo siguiente siendo «root»:
cd letsencrypt
./letsencrypt-auto --email tudireccion@deemail.com --agree-tos

Con esto se nos registrará una cuenta con nuestro correo que se nos asociará con el certificado. Además se nos instalaran varias dependencias necesarias para continuar.

Después de la instalación de las dependencias nos pedirá que elijamos el sitio al que le queremos crear el certificado de todos los que tenemos en nuestro servidor. Elegimos el deseado y ya tendremos listo nuestro sitio certificado por una entidad certificadora.

Se nos habrán creado las diferentes claves en el directorio /etc/letsencrypt/live/sitionuevo.com/ :

ls /etc/letsencrypt/live/sitionuevo.com/
cert.pem  chain.pem  fullchain.pem  privkey.pem

Los cuales contienen:

  • cert.pem – contiene el certificado firmado.
  • chain.pem – certificado “intermedio”.
  • fullchain.pem – contiene ambos cert.pem y chain.pem, para los servicios que soporten este formato.
  • privkey.pem – la llave privada del certificado.

También podemos hacer un test al certificado de nuestro sitio, para ello introducimos el URL de nuestro sitio en www.ssllabs.com.

Captura de pantalla de 2017-02-25 20:58:02.png

Captura de pantalla de 2017-02-25 22:24:51.png

En Debian Jessie con Nginx

Seguiremos usando la entidad certificadora «Let’s Encrypt Authority X3». Usaremos otra máquina (en mi caso virtual) para todo el proceso que es bastante parecido al anterior.

Lo primero que haremos sera preparar el entorno, para ello:

  • Instalamos nginx:
sudo apt-get install nginx
  • Importamos el sitio web a /var/www .
  • Creamos el sitio web siendo «root»:
nano /etc/nginx/sites-available/sitionuevo
server {
  listen 443;
  server_name sitionuevo.com;
  root /var/www/sitionuevo;
  index index.html index.htm;
}
  • Activamos el sitio y recargamos Nginx siendo «root»:
ln -s /etc/nginx/sites-available/sitionuevo /etc/nginx/sites-enabled/sitionuevo
systemctl reload apache2

Necesitaremos los mismos requisitos anteriormente dichos para seguir con el proceso:

  • Tener un dominio en Internet (ya sea pagado o gratis), podemos usar DOT TK para ello. Y registramos el nombre de nuestro sitio.
  • Abrimos el puerto 80 y 443 en nuestro router.

Ahora clonaremos el depósito de «Let’s Encrypt» en nuestro servidor el cuál nos realizará la instalación del certificado, para ello:

  • Instalamos «git» para poder clonar el deposito de «Let’s Encrypt»:
sudo apt-get install git
git clone https://github.com/letsencrypt/letsencrypt.git
  • Ejecutamos lo siguiente siendo «root»:
cd letsencrypt
./letsencrypt-auto certonly --webroot -w /var/www/sitionuevo/ -d sitionuevo.com

Esta vez lo hemos realizado diferente, lo hemos ejecutado de forma manual ya que «Let’s Encrypt» no tiene «plugins» para automatizar el trabajo con Nginx,que sí los tiene para Apache2.

Después de la instalación de las dependencias nos pedirá el correo, que aceptemos los términos, etc…

Ahora queda volver a configurar el sitionuevo para que use los nuevos certificados,para ello:

  • Configuramos el nuevo sitio siendo «root» y lo dejamos de la siguiente manera:
 nano /etc/nginx/sites-available/sitionuevo
server {
  listen 443;
  server_name sitionuevo.com;

  root /var/www/sitionuevo;
  index index.html index.htm;

  ssl on;
  ssl_certificate      /etc/letsencrypt/live/sitionuevo.com/fullchain.pem;
  ssl_certificate_key  /etc/letsencrypt/live/sitionuevo.com/privkey.pem;
}

Y ya tendremos listo nuestro sitio certificado por una entidad certificadora.

Hacemos el test al certificado de nuestro sitio en www.ssllabs.com:

Captura de pantalla de 2017-02-25 22:28:49.png

Captura de pantalla de 2017-02-25 22:30:06.png

Como vemos al realizar la instalación manual del certificado en Nginx no hemos conseguido el mismo nivel de seguridad que con Apache2 pero sigue siendo seguro.

En Windows Server 2012 con IIS

Y volvemos a seguir usando la entidad certificadora «Let’s Encrypt Authority X3». Usaremos otra máquina virtual pero esta vez con Windows Server 2012.

Lo primero que haremos sera preparar el entorno, para ello:

  • Agregamos el rol de Servidor web IIS en el servidor y reiniciamos.
  • Importamos el sitio web a c:\inetput .
  • Creamos el sitio web, para ello:
    • Entramos en Administración de IIS.
    • Agregamos un sitio web:
      • Nombre del sitio: «sitionuevo»
      • Ruta de acceso física: «c:\inetput\sitionuevo»
      • Nombre de host: «sitionuevo.com»

Necesitaremos los mismos requisitos anteriormente dichos para seguir con el proceso:

  • Tener un dominio en Internet (ya sea pagado o gratis), podemos usar DOT TK para ello. Y registramos el nombre de nuestro sitio.
  • Abrimos el puerto 80 y 443 en nuestro router.

Descargamos la herramienta de «Let’s Encrypt» aquí, descomprimimos, entramos en la carpeta descomprimida y ejecutamos «letsencrypt.exe».

Nos pedirá que elijamos entre los sitios web del servidor, elegimos el deseado y contestamos las siguientes preguntas.

Se nos guardarán los certificados en el directorio C:\Users\Administrador\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org .

Y automáticamente ya tendremos listo nuestro sitio certificado por una entidad certificadora.

Hacemos el test al certificado de nuestro sitio en www.ssllabs.com:

captura-de-pantalla-de-2017-02-25-234402captura-de-pantalla-de-2017-02-25-234411

Como vemos en esta ocasión tampoco hemos conseguido el mismo nivel de seguridad que con Apache2 en Debian pero sigue siendo seguro.

Deja un comentario