Avisos
Vaciar todo

Como instalar certificado seguridad SSL para Odoo


Raul Garcia Calvache
(@raul_garcia)
Miembro Admin
Registrado: hace 4 años
Respuestas: 1
Topic starter  

Hola compañeros del foro hoy vamos a mostrar como instalar un certificado ssl con CertBort para nuestro Odoo y de esta manera cifrar en envio y recepcion de nuestro Odoo.

Todo esto lo tenemos que hacer conectado por ssh en nuestra maquina virtual VPS, Vamos necesitar :

Certbot es un cliente ACME automático fácil de utilizar, que obtiene certificados SSL/TLS gratis para tu sitio Web Odoo, provistos por Let's Encrypt. Certbot fue desarrollado por la EFF (Electronic Frontier Foundation) como "cliente oficial" de la autoridad certificante de Let's Encrypt, funciona tambien con cualquier CA que soporte el protocolo ACME (Automated Certificate Management Environment).

Nginx: Como servidor Web.

Una vez introducidos con lo que necesitamos vamos empezar con el proceso de instalacion .

En primer lugar vamos instalar Nginx

apt-get install nginx
Ahora vamos instalar CertBot
apt-get update
apt-get install certbot
Generamos Strong Dh (Diffie-Hellman) Group
openssl dhparam -out /etc/nginx/ssl/dhp-2048.pem 2048
 
Creamos Map .well-known/acme-challenge en directorio /var/lib/letsencrypt
mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
 
para que reconozca el map al crear el ssl tenemos que crear siguientes ficheros para Nginx:
nano /etc/nginx/snippets/letsencrypt.conf
con el contenido :
location ^~ /.well-known/acme-challenge/ {
  allow all;
  root /var/lib/letsencrypt/;
  default_type "text/plain";
  try_files $uri =404;
}
Creamos un segundo snippet ssl.conf :
nano /etc/nginx/snippets/ssl.conf
Con el siguiente contenido :
ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
Creamos el fichero para validar dominio servidor nginx :
nano /etc/nginx/sites-available/your_domain.conf
Con siguiente contenido :
server {
listen 80;
server_name your.com www.your_domain.com;

include snippets/letsencrypt.conf;
}
Creamos el enlace simbolico para directorio sites-enabled :
ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
Reiniciamos servidor Nginx :
systemctl restart nginx
Ya podemos solicitar el certificado gratuito de Let's Encrypt sustituimos dominio.com por nuestro dominio
certbot certonly --agree-tos --email test@example.com --webroot -w /var/lib/letsencrypt/ -d your_domain.com -d www.your_domain.com
por ultimo volvemos configurar nginx para que funcion odoo con certificado ssl :
nano /etc/nginx/sites-available/your_domain.conf
con contenido que debes cambiar dominio.com por tu dominio :
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;
}
ahora reiniciamos servidor nginx:
service nginx restart
ahora ya podremos entrar en nuestra web de odoo con certificado ssl :
el certificado ssl gratuito caduca cada 3 meses si queremos renueve automaticamente tendremos que añadir un cron :
 
crontab -e
queremos que se ejecute cada lunes 00:00 y que se reinicie nginx despues de 5 minutos :
00 00 * * 1 certbot renew >> /var/log/le-renew.log
05 00 * * 1 /etc/init.d/nginx reload
Bueno esto es todo , espero que os pueda servir de ayuda para los que quieran intalarlo en su servidor vps , cualquier duda estamos aqui .
Un saludo

Citar
Compartir: