Entradas

<Tip/> Configurar un servidor HTTPS con Nginx

Dudaba sobre si hacer esta entrada o no, ya que hay mucha documentación al respecto en la red (aunque algo desordenada a mi entender), pero la principal motivación del blog es que las entradas me sirvan a mi mismo, así que prefiero publicarlo a que quede perdido en una nota de Evernote.

Bueno vamos a ello, disponer de una conexión https en nuestro sitio web nos brinda varias ventajas, por un lado nos proporciona un plus de seguridad al encriptar  la conexión del sitio, y por otro ayuda a mejorar el SEO del mismo, ya que Google premia los sitios que disponen de este tipo de conexión.

Esta entrada no pretende ser una guía muy exhaustiva simplemente expondré los pasos necesarios para crear y configurar un certificado SSL en un servidor Nginx.

Paso 1: Generar la clave privada (.key)

Nos conectamos a nuestro servidor y generamos la clave privada con openssl en el directorio /etc/ssl. Nos solicitará que creemos una contraseña.

cd /etc/ssl/
sudo openssl genrsa -des3 -out tudominio.key 2048 

Paso 2: Crear la solicitud de certificado (.csr)

Para generar una solicitud de firma de certificado lo que se denomina como Certificate Signing Request (CSR), ejecutamos lo siguiente:

sudo openssl req -new -newkey rsa:2048 -nodes -keyout tudominio.key -out tudominio.csr

Introducimos la información solicitada:
Country Name (AU): El formato de dos letras de tu país
State or Province (S): Nombre del estado o provincia en donde se encuentra tu organización. No es obligatorio.
Locality or City (L): Nombre de la ciudad en la que está registrada o se encuentra tu organización. No es obligatorio.
Organization (O): El nombre legalmente registrado para tu negocio. Si te inscribes como un individuo, ingresa el nombre del certificado del solicitante.
Organization Unit: No es obligatorio, se refiera al nombre DBA (Doing Business As).
Common Name (CN): El nombre de dominio completo o dirección URL que quieras asegurar. Si estás solicitando un certificado Wildcard, agrega un asterisco (*) a la izquierda del nombre común, por ejemplo, *.coolexample.com.
Una vez completado el formulario nos solicitará otro password, este es opcional, si lo creamos cada vez que reiniciemos Nginx deberemos introducirlo.

Paso 3: Generar los certificados intermedios (.crt)

Copia el contenido de todo el fichero CSR generado y pégalo/subelo a la autoridad certificadora. En mi caso lo hice con GoDaddy, ya que tenían los certificados a 5$. En este paso se generán dos certificados intermedios.

Paso 4: Contatenar los certificados intermedios (.crt)

A continuación debemos concatenar los certificados intermedios generados en el paso anterior.¡ (da igual el orden).

cat certificado1.crt certificado2.crt >> tudominio.crt

Paso 5: Configurar Nginx

Subimos el certficado a nuestro servidor al directorio /etc/ssl/ y editamos nuestro fichero de configuración de Nginx tal que así:

server {
listen 443;
server_name tudominio.com;

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

ssl on;
ssl_certificate /etc/ssl/tudominio.crt;
ssl_certificate_key /etc/ssl/tudominio.key;
}

Si además queremos que todo nuestro trafico http sea redireccionado a https añadimos lo siguiente:

server {
listen 80;
server_name tudominio.com www.tudominio.com;
return 301 https://$host$request_uri;
}

En principio esto es todo lo que necesitamos para hacer uso del protocolo seguro de HTTPS en nuestro servidor, cualquier duda que tengais no dudeis en comentarla.