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).

5 comentarios

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

A · 21/12/2019 a las 2:20 pm

No coloque literalmente «mi_domino.com». Ahí debe reemplazarlo por el nombre de SU dominio real, accesible desde todo el internet por el puerto HTTP 80 y HTTPS 443.

Danip · 04/11/2020 a las 2:40 am

Hola, ¿sirve para la versión 13?

Washington · 22/02/2022 a las 1:41 pm

Estaba pensando en comprar un certificado SSL para mi pagina hecha en odoo en un server ubuntu 16.04, pero veo que esto es gratis o no?

Deja un comentario

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

*

code