Instalar certificados SSL COMODO en Nginx

Uso Namecheap como mi proveedor de SSL y normalmente compro certificados COMODO, porque son los menos costosos, pero también tienen cierta dificultad al configurarlos.

Estos son los pasos que yo sigo para configurarlos en mi servidor Nginx.

Comprar el certificado

Antes de comprar el certificado, debemos de tener listo nuestro archivo CSR (Certificate Signing Request) y nuestra llave privada. Te preguntaran por le contenido del archivo csr

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

Esto nos genera dos archivos:

  • example_com.key -- Tu llave privada. La necesitarás más adelante para configurar nginx.
  • example_com.csr -- Tu archivo CSR.

Ahora, compras el certificado, sigues los pasos en sus sitio web y deberías recibir pronto un correo electrónico con tu certificado PositiveSSL. Este contiene un archivo .zip con lo siguiente:

  • Certificado raíz CA -- AddTrustExternalCARoot.crt
  • Certificado Intermedio CA -- COMODORSAAddTrustCA.crt
  • Certificado Intermedio CA -- COMODORSADomainValidationSecureServerCA.crt
  • Tu certificado PositiveSSL -- www_example_com.crt (o el subdominio que les diste)

Instalando el Certificado en Nginx.

Combinamos todo para nginx.

  1. Combine los anteriores certificados. (El orden importa aquí)

    cat www_example_com.crt COMODORSADomainValidationSecureServerCA.crt  COMODORSAAddTrustCA.crt        AddTrustExternalCARoot.crt > ssl-bundle.crt
    
  2. Mueve los archivos a un lugar al que Nginx tenga acceso

    mkdir -p /etc/nginx/ssl/example_com/
    mv ssl-bundle.crt /etc/nginx/ssl/example_com/
    
  3. Asegurate que la llave privada está en un lugar al que Nginx tenga acceso de lectura.

    mv example_com.key /etc/nginx/ssl/example_com/
    
  4. Para mejorar la seguridad de nuestro servidor, vamos a generar una nueva llave de intercambio DHS (Es algo complicado de explicar, pero cuando nuestro servidor va a iniciar la comunicación cifrada, hace un intercambio de llaves DHS que por default es de 1024 bits). La generación de dicha llave de intercambio puede tomar algunos minutos.

    openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096
    
  5. Asegúrate que Nginx apunta a los archivos correctos

    server {
    listen 443;
    
    ssl on;
    ssl_certificate /etc/nginx/ssl/example_com/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/example_com/example_com.key;
    
    # Secure exchange process
    ssl_dhparam  /etc/nginx/ssl/example_com/dhparam.pem;
    
    # Enable SSL Cache
    ssl_session_cache shared:SSL:5m;
    ssl_session_timeout 1h;
    
    # Enable HTTP Strict Transport Security
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    
    # side note: only use TLS since SSLv2 and SSLv3 have had recent vulnerabilities
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    
    # ...
    
    }
    
  6. Reinicia Nginx

Actualizado: Agregué un paso 4 para crear una llave DHS y también algunos parámetros para incrementar la seguridad de nuestro servidor usando SSL. Ahora pueden ir a este sitio y hacer una prueba de la seguridad de su servidor.

Pingbacks

Los pingbacks están cerrados.

Comentarios

Los comentarios están deshabilitados.