Después de varios proyectos en los que he tenido que desplegar sitios web con SSL he dado con una opción económica y bastante versátil.

PositiveSSL Multi-Domain por solo 27€/año podemos añadir un certificado SSL a 3 dominios.

postimage

Contratación y registro

Documentación completa en namecheap.

El proceso es bastante fácil y rápido, una vez contratado y pagado el producto; te solicitará que pegues el contenido de la clave generada.

Puedes lanzar este comando en cualquier maquina linux:

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

Tendrás que rellenar la siguiente información:

  • Common Name (el dominio principal en el que instalaras el certificado SSL)
  • Country
  • State (or province)
  • Locality (or city)
  • Organization
  • Organizational Unit (Department)
  • E-mail address

Una vez realizado estos pasos verás que has creado el fichero server.key, copia el contenido y pegalo en la página de registro del SSL.

Una vez realizado esto el proceso de namecheap para activar el SSL te llevará al paso para validar la titularidad del dominio. El método más sencillo es por email, seleccionado el correo al que quieres que te envíen la validación.

Una vez validado a través de un código enviado a la cuenta de correo que indicaste, recibirás un correo electrónico con un fichero zip que contiene el certificado.

Según la documentación de namecheap puede contener varios ficheros, pero para el producto que hemos contratado sólo vienen dos (00112233.ca-bundle y 00112233.crt ).

Configuración en el servidor

Documentación completa en namecheap para ngix/Apache.

Con los ficheros descargados solo nos queda subirlos al servidor dónde queramos configurar el SSL y seguir los pasos para configurar el servidor.

Aunque hay muchas opciones, la configuración esencial y básica para añadir el certificado SSL a un servidor en el caso de nginx se resume en 4 líneas:

 listen 443;
 ssl on;
 ssl_certificate /home/user/ssl/cert_chain.crt;
 ssl_certificate_key /home/user/ssl/server.key;

Un ejemplo completo de configuración de un certificado SSL en nginx para una aplicación django, sería el siguiente:

upstream cloudbilling {
    server localhost:4086;
}
server {
    listen 80;
    listen [::]:80 ipv6only=on;
    return 301 https://domain.com$request_uri;
  }

server {
    listen 443;
    ssl on;
    ssl_certificate /home/user/ssl/cert_chain.crt;
    ssl_certificate_key /home/user/ssl/server.key;

    server_name domain.com www.domain.com;

    client_max_body_size 4G;
    keepalive_timeout 5;

    location / {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
        proxy_pass http://user;
    }

    location /static {
        autoindex on;
        alias /home/user/static;
    }
     location  /media/ {
        autoindex on;
        alias /home/user/static/media/;
    }

A demás en este ejemplo se hace una redirección completa del puerto 80 al 443 para que todo el tráfico vaya por SSL.

Espero que sea de ayuda para vuestros proyectos.