Instalacion de certificado ssl
Last updated
Last updated
El propósito de este documento es servirnos de guía a la hora de instalar y configurar un certificado SSL standard en un servidor Linux con una distribución Debian o similar (ubuntu ) corriendo con nginx.
Servidor con distribución Linux Debian. Preferentemente Ubuntu 14.04 LTS al momento de la redacción de éste instructivo.
Acceso via ssh al servidor donde se hará la implementación con un usuario con permiso de sudo o bien root.
Acceso al gestor del certificado, normalmente GoDaddy.
Primeros Pasos
Lo primero que debemos hacer es ingresar al gestor del certificado SSL. En nuestro caso y en adelante, todos los ejemplos harán uso de GoDaddy. Una vez dentro iremos al área de configuración de certificados SSL como muestra la Figura 1.
Figura 1: Configuración de certificados SSL.
Podemos tener uno o varios certificados, por lo que haremos click sobre el botón “Configuración” sobre el que nos interese instalar y configurar en un servidor. Se desplegará un modal que nos brindará opciones sobre que se desea hacer con el certificado. Como es la primera vez que vamos a configurar dicho certificado, solo nos presenta una opción en el dropdown del modal, por lo que directamente apretaremos en el call to action “Configurar”.
Luego, el sitio nos redirigirá al mismo lugar donde nos encontrábamos previamente, solo que ahora habrá cambiado las acciones disponibles a ejecutar sobre el certificado, como lo muestra la Figura 2.
Figura 2: Acciones posibles nuevas sobre el certificado SSL.
Haremos click en administrar. Nos llevará a una nueva pantalla, que tendrá una breve descripción del certificado y un link “Configurar”:
. Ingresamos haciendo click. En la siguiente página nos mostrará un formulario en donde se nos pide una solicitud de firma de certificado
CSR
, como muestra la Figura 3.
Figura 3: Solicitud de CSR.
Para generar un CSR con nginx, se deben seguir los siguientes pasos:
Entrar via ssh al servidor donde está hosteada la aplicación de rails, con algún usuario que tenga acceso sudo por lo menos.
Ejecutar el siguiente comando en la home del usuario, que comenzará el proceso de creación del CSR, donde “tu_dominio” hace referencia al dominio que se está obteniendo el certificado:
openssl req -new -newkey rsa:2048 -nodes -keyout your tu_dominio.key -out tu_dominio.csr
Comenzará un wizard que nos pedirá algunos datos. El primero es el código del país que representa al individuo dueño del dominio. Por ejemplo si es argentina, usaremosAR.
Luego nos pedirá la provincia, en éste ejemplo será Buenos Aires.
Pide luego la ciudad, pondremos Ciudad Autónoma de Buenos Aires o bien la que el cliente nos diga si desea otra.
Nombre de la organización. Será el nombre de la empresa ya sea real o ficticio pero que represente al dominio. Ejemplo, para Redmint, se pondría Redmint SRL.
Nos pide luego algunos campos extra que dejaremos en blanco a menos que el cliente específicamente nos de esos datos o sepamos de antemano que podemos obtenerlos. Suelen ser datos para empresas grandes. Frenar cuando pida el Common Name, no dejar en blanco.
El common name, se debe llenar con la URL que se está intentando proteger. Por ejemplo si estámos queriendo proteger contagram.com, pondremos eso. Si es un certificado que aplica para proteger además del dominio, varios subdominios, utilizaremos wildcard *.contagram.com.
Nos pedirá un Email que debe ser de contacto del responsable del dominio.
Luego nos pide un password challenge que dejaremos en blanco y opcionalmente, la Company Name, que dejamos en blanco o bien la llenamos con el nombre de la companía asociada al dominio.
Una vez hechos estos pasos, en el lugar donde ejecutamos el comando quedará el archivo tu_dominio.csr. Deberemos abrirlo con cualquier editor de texto (vim, nano), copiar su contenido y pegarlo en el campo del formulario de la figura 3. A continuación destildamos los 2 checkbox del formulario y hacemos click en “Solicitud de certificado”. Debería llevarnos a una pantalla donde nos indicará que un email fue enviado al dueño de la cuenta de GoDaddy y tendrá un circulo de porcentaje de completitud que se actualizará solo a medida que GoDaddy valida el CSR y que seamos nosotros realmente los propietarios del dominio que queremos proteger con el certificado. Contactarse con el dueño de la cuenta de GoDaddy para que esté atento al email que le pueda llegar.
El porcentaje debería llegar solo a 100% con el tiempo, pero hay veces donde en el 50% nos piden hacer una comprobación de que somos dueños del dominio agregando un registro TXT en el DNS del dominio o un archivo .html que nos dan ellos, en la carpeta public de nuestra aplicación Rails en el servidor. Lo más sencillo es hacer lo del registro TXT. Si sacamos el dominio con GoDaddy simplemente vamos a la administración de dicho dominio y agregamos el registro, o bien, en el registrar donde hayamos obtenido el dominio. Si es un .com.ar que se consigue desde .nic.ar, para ese tipo de dominios que solo se pueden delegar, pues deberemos agregar el registro .txt sobre el dns al cual le hemos delegado el dominio .com.ar.
Una vez que el porcentaje de completitud llega a 100%, nos encontramos con una pantalla como la figura 4:
Figura 4: Proceso de verificación completado.
Lo primero que haremos será copiar y pegar el código html que figura en el formulario de la derecha en algún archivo temporal en nuestra pc para luego incluirlo de ser necesario en el sitio en las páginas donde lo creamos convenientes. Luego, hacemos click en el link de “Descargar”. Aparecerá una nueva pantalla que nos preguntará el tipo de servidor. Como nginx no está listado, elegimos la opción “Otra”. Luego hacemos click en descargar archivo .zip.
Lo descargaremos a nuestra pc. El contenido del .zip consta de 2 archivos. Uno es el certificado intermedio que suele tener las claves de autenticación de las entidades intermedias (GoDaddy, etc), y el otro es el certificado primario de nuestro dominio. Debemos subir al servidor ambos archivos o bien el .zip y luego descomprimirlo. Para ello lo hacemos con el comando scp:
scp nombre_del_archivo.zip user@server:.
Luego entramos via ssh al servidor a donde hayamos enviado el .zip, que debería ser por comodidad, en el mismo lugar donde generamos el archivo .csr. Lo primero que debemos hacer es concatener el certificado primario sobre el intermedio. Para ello, haremos:
cat certificado_primario.crt certificado_intermedio.crt >> tu_dominio.crt
El certificado primario de GoDaddy suele tener un nombre del estilo “4abcdasda.crt” y el intermedio “gd_bundle…crt”.
Una vez que concatenamos los certificados, deberemos mover tu_dominio.crt y tu_dominio.key al directorio /etc/ssl/certs.
Finalmente, deberemos configurar el virtual host de nginx para que tenga una estructura similar a la siguiente (Ojo con el copy paste, los ; los toma mal):
Una vez hecho ésto, guardamos el virtual host del nginx y lo recargamos:
sudo service nginx reload.
Debería respondernos OK (o nada) y ya debería estar funcional la dirección https para nuestro sitio. Borrar cookies o usar incognito y probar que el https no tenga errores al ingresar y muestre el candado verde en el browser y si entramos por http, nos redirija automáticamente. Si no funciona revisar que estén correctamente ubicados los archivos .crt y .key que generamos en los pasos anteriores. Importante, si no anda, verificar que el puerto 443 esté abierto, en amazon las policy rules puede no estar incluyendo dicho puerto como inbound.