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
6 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.
Javier Salazar Carlos · 22/12/2019 a las 9:03 am
Es correcto
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?
Cesar Melgoza · 20/06/2025 a las 12:08 pm
Esto es vigente actualmente y sirve para Odoo 17?