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