Hola amigos, con la finalidad de cifrar el envío y recepción de paquetes en Odoo vamos a ver como añadir certificado de seguridad.

Vamos a emplear:

Certbot: Es un cliente automático y fácil de usar que recupera y despliega los certificados SSL/TLS para nuestro servidor web. Aunque inicialmente fue desarrollado para trabajar con Let’s Encrypt, puede funcionar con cualquier otra autoridad certificadora que soporte el protocolo ACME.

Nginx: Como servidor Web.

Asumimos que tenemos instalado: Odoo

Paso1: Instalamos Nginx:

apt-get install nginx

Paso2: Instalamos Certbot

apt-get update
apt-get install software-properties-common
add-apt-repository ppa:certbot/certbot
apt-get update 
apt-get install certbot

Paso3: Obtenemos el certificado

Se recomienda detener el servicio de nginx y el dominio.com será el dominio del cual deseas obtener el certificado de seguridad.

service nginx stop
certbot certonly --standalone -d dominio.com
service nginx start

Al ejecutar el comando de la linea 2, nos pedirá nuestro correo, el cual debemos de colocar, también nos pedirá que aceptemos los términos y condiciones (Aceptamos) y una pregunta final si nos gustaría compartir nuestro correo con  Electronic Frontier Foundation (EFF), el cual aceptamos también.

Si deseamos ver nuestro certificado generado, podremos ver en:

cd /etc/letsencrypt/live/dominio.com/

Paso4: Configurando nginx

Creamos el directorio:

mkdir /etc/nginx/ssl

Ejecutamos el siguiente comando, esto puede demorar un poco.

openssl dhparam -out /etc/nginx/ssl/dhp-2048.pem 2048

Creamos el siguiente archivo donde dominio.com es el mombre propiamente dicho te tu dominio

vim /etc/nginx/sites-available/dominio.com

Agregamos el siguiente contenido, reemplazando dominio.com por su propio dominio(linea 7, 13, 14 y 48)

upstream odoo {
    server 127.0.0.1:8069;
}

server {
    listen      443 default;
    server_name dominio.com;

    access_log  /var/log/nginx/odoo.access.log;
    error_log   /var/log/nginx/odoo.error.log;

    ssl on;
    ssl_certificate     /etc/letsencrypt/live/dominio.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/dominio.com/privkey.pem;
    keepalive_timeout   60;

    ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";
    ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/nginx/ssl/dhp-2048.pem;

    proxy_buffers 16 64k;
    proxy_buffer_size 128k;

    location / {
        proxy_pass  http://odoo;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_redirect off;

        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto https;
    }

    location ~* /web/static/ {
        proxy_cache_valid 200 60m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://odoo;
    }
}

server {
    listen      80;
    server_name dominio.com;

    add_header Strict-Transport-Security max-age=2592000;
    rewrite ^/.*$ https://$host$request_uri? permanent;
}

 

Activamos la nueva configuración de Nginx y reiniciamos el servicio:

ln -s /etc/nginx/sites-available/dominio.com /etc/nginx/sites-enabled/dominio.com
/etc/init.d/nginx restart

Paso5: Creamos un cron

Los certificados tienen una duración de 90 días, vamos a crear un cron para que se renueve automáticamente cada lunes a las 2:30 am y reiniciamos nginx a las 2:35 am para que use el nuevo certificado.

crontab -e

Agregamos lo siguiente:

30 2 * * 1 certbot renew >> /var/log/le-renew.log
35 2 * * 1 /etc/init.d/nginx reload

 

 

 

 

 


Javier Salazar Carlos

Soy Ingeniero de Ingeniería de Sistemas, egresado de la Universidad Nacional del Callao, especialista en Tecnologías de la Información y de las Comunicaciones (TICs).

1 comentario

Alan Cortés · 29/03/2018 a las 3:02 pm

Que tal, interesante lo que compartes.
Estoy haciendo la prueba en una maquina con Ubuntu server 16.04 y Odoo 10.0, pero al ejecutar certbot certonly –standalone -d mi_domino.com, me aparece el siguiente texto en consola: Failed authorization procedure. …The server could not connect to the cliente to verify the domain,etc.
Estoy usando un nombre de dominio noip
Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

code