Como instalar un certificado SSL gratuito letsencrypt en nginx

Como instalar un certificado SSL gratuito letsencrypt en nginx

(o cómo aumentar la seguridad de transmisión de datos entre nuestro sitio web y nuestros visitantes, ofreciendo conexión https — gratis)

De acuerdo con la Wikipedia:

Let's Encrypt is a certificate authority that entered public beta on December 3, 2015 that provides free X.509 certificates for Transport Layer Security encryption (TLS) via an automated process designed to eliminate the current complex process of manual creation, validation, signing, installation and renewal of certificates for secure websites.

Letsencrypt es entonces una autoridad para emisión de certificados gratuitos de https :). Hace unos días mi amigo Evaristo me había comentado que esta entidad ofrecía certificados SSL válidos (por 90 días, hay que renovar pero igual es gratis) para cualquiera. Casi no lo pude creer, pero como reza el dicho «Pichadas, hasta puñaladas» decidimos probar y en este caso mover nuestro blog a https.

En nuestro caso, utilizamos nginx como servidor web, leyendo en el sitio aún no es automatizado para este servidor, pero igual es fácil de generar. Para ejemplificar lo haré con el dominio tar.mx. Los requisitos además de ello, es tener una distribución de Linux moderna y git instalado, el cual viene normalmente en cualquier sistema operativo.

Primero detenemos el servicio de nginx y clonamos el proyecto de letsencrypt

sudo service nginx stop

#creamos un directorio en nuestro home

mkdir ~/ssl/

cd ~/ssl/

git clone https://github.com/letsencrypt/letsencrypt

cd ~/ssl/letsencrypt/

# solicitamos el certificado, poner un correo válido.

~/ssl/letsencrypt/letsencrypt-auto certonly --standalone --email [email protected] -d tar.mx -d www.tar.mx

Si todo sale bien (debería existir la configuración del dominio tar.mx en nginx ya funcionando y el servicio de nginx detenido.) nos debe crear algunos archivos en /etc/letsencrypt/live/tar.mx/

(respaldamos nuestra configuración actual)

Copiamos entonces el certificado a donde se encuentra nginx:

sudo mkdir -p /etc/nginx/cert/tar.mx/

cp /etc/letsencrypt/live/tar.mx/privkey.pem /etc/nginx/cert/tar.mx/

cp /etc/letsencrypt/live/tar.mx/fullchain.pem /etc/nginx/cert/tar.mx/fullchain.pem

sudo chown -R www-data:www-data /etc/nginx/cert/tar.mx/

(respaldamos nuestra configuración actual)

Editamos la definición de nuestro servidor de nginx que presumiblemente está en /etc/nginx/sites-available/ y añadimos una nueva configuración server { }, algo como lo que sigue:

server {

error_log /var/log/nginx/tar.error.log;

listen tar.mx:443;

server_name tar.mx www.tar.mx;

ssl

ssl on;

ssl_protocols TLSv1.2 TLSv1.1 TLSv1;

ssl_certificate /etc/nginx/cert/tar.mx/fullchain.pem;

ssl_certificate_key /etc/nginx/cert/tar.mx/privkey.pem;

charset utf8;

root /var/www/tar;

index index.html;

}

Eso sería todo, si deseamos que cuando entren a http://tar.mx automáticamente los redirija a https://tar.mx entonces en nuestra configuración inicial (del puerto 80 normal) añadimos esta línea:

return 301 https://tar.mx$request_uri;

Lo anterior serviría para redirigir el tráfico de http a https. Eso es todo, el certificado será válido durante 90 días, es recomendable renovarlo antes.

letsencrypt - sitio oficial https://letsencrypt.org/

Sólo como anécdota, administramos un sitio que cuando salieron los SSL nos costaba unos 10,000 pesos mexicanos cada año por tener el certificado. Luego nos cambiamos a otro con verificación extendida que nos cuesta unos 300 $USD. Pero para proyectos personales creo que basta tener letsencrypt, es igual seguro y no nos cuesta. Por cierto aquí tengo un tutorial para instalar un carísimo certificado de verisign con nginx.

+ fotos / videos

Almacenado en Configuraciones, WebServer, nginx, Linux

por Jorge Martínez Mauricio :)

blog / fotos / archivo

Como instalar un certificado SSL gratuito letsencrypt en nginx

tar.mx es un blog sobre fotografía, tecnología y otras chunches

modificado jueves 8 de julio de 2021, 11:19

cuentame