Guia Instalación Certificados SSL

Actualmente utilizamos los servicios de SSLForFree quienes ofrecen un servicio gratuito de generacion de certificados que son validos en el 99% de los navegadores lo cual es mas que suficiente, sin embargo estos certificados deben renovarse cada 3 meses.

El certificado SSL es valido para un dominio y todos sus subdominios, SSLForFree permite tener hasta 3 certificados simultaneamente de forma gratuita, es importante tener en cuenta que los navegadores no indicaran que un sitio es seguro a menos que todas las urls que se utilizan dentro de las comunicaciones con un servicio se hagan mediante https, esto significa por ejemplo que un sitio web servido por https que contiene un link a una imagen que es servida por http se clasificara como no seguro.

Guia

1 : Autenticacion de propiedad del Dominio

Para empezar debemos ingresar nuestro dominio en el promt que nos ofrece la pagina, lo cual nos llevara a un proceso donde seleccionaremos la forma en la que se autenticara la propiedad de dicho dominio, la forma que usamos actualmente es a traves del correo electronico del propietario, quien recibira un correo de confirmacion con instrucciones

2 : Adquisicion y formato del certificado

Tras autenticarnos podremos descargar el certificado como tal, sin embargo para poder utilizarlo debemos concatenar los contenidos, en la pagina de SSLForFree explican como hacerlo, sin embargo lo explican usando cat, un comando linux, por lo cual, si queremos hacer esta operacion en windows podemos usar el comando type, es comun que el final y el principio de los certificados no quede separado por una nueva linea, por ello debemos asegurarnos de que el archivo generado lleve la siguiente estructura o arreglarlo a mano:

...
[contenido]
----Final----
----Inicio----
[contenido]
...

3 : Servir nuestra aplicacion por HTTPS

Finalmente solo resta emplear el certificado dsde nuestro servidor, actualmente usamos NGINX para este fin, para servir a travez de https algun servicio lo que debemos hacer es especificar que escuchamos desde el puerto 443, el cual esta designado en los equipos como el puerto por defecto para recibir peticiones https, asi como el puerto 80 lo es para http. Tambien especificaremos las rutas a nuestro certificado y algunas modificaciones menores a nuestra definicion:

server {
    listen              443 ssl;
    server_name         www.subdominio.dominio.com  subdominio.dominio.com;
    ssl_certificate     [full path to cert];
    ssl_certificate_key [full path to key];
    location / {
		proxy_pass https://127.0.0.1:[puerto]/[endpoint] ;
	}
}

Conlusion

Esto deberia ser suficiente para servir nuestra aplicacion de forma segura utilizando https, ya que nuestro objetivo es la seguridad en el trafico de informacion es necesario cerrar el puerto de entrada de nuestro servicio si es que no lo hemos hecho ya, por ejemplo, si tenemos una aplicacion que escucha desde el puerto 8088, debemos cerrar esa regla de entrada desde nuestro firewall, ya que si alguien conoce la direccion ip y el puerto que corresponden a la aplicacion, podra acceder directamente a ella, pues NGINX necesita conocer el dominio para hacer las redirecciones pertinentes, finalmente NGINX solo escucha tecnicamente los puertos 80 y 443, de esta forma nos sercioramos de tener solo un medio de comunicacion con el exterior lo cual resulta ser mucho mas seguro.