Skip to Content
  • +31 653-919-302
Cafayate.Net
  • 0
  • 0
  • Sign in
  • Nederlands English (US) Español (AR)
  • Contact Us
  • Home
  • Blog
  • Jobs
  • Contact us
Cafayate.Net
  • 0
  • 0
    • Home
    • Blog
    • Jobs
    • Contact us
  • +31 653-919-302
  • Nederlands English (US) Español (AR)
  • Sign in
  • Contact Us

Let’s Encrypt SSL-sertifikaatti ja Nginx-webbipalvelin Odoo 10

  • All Blogs
  • Tech Blog
  • Let’s Encrypt SSL-sertifikaatti ja Nginx-webbipalvelin Odoo 10
  • March 5, 2021 by
    Administrator

    Tietoja
    Kirjoittanut Mikko Salmela
    Julkaistu: 26.10.2016
    Viimeksi päivitetty: 26.10.2016

    Edellisessä Odoo-ohjeessani asensin Odoo 10 -toiminnanohjausjärjestelmän Ubuntu 16.04 virtuaaliserverille, mutta yhteyttä ei vielä suojattu, eikä serverin osoite http://<IP-osoite>:8069 ole kovin miellyttävä sekään. Tämän ohjeen asennuksien ja konfigurointien jälkeen edellisessä ohjeessa asentamani Odoo-ympäristön yksi kanta (ja ainoastaan se), nimeltään “odoo”, on käytettävissä Let’s Encrypt open source SSL-sertifikaatilla (https://…) varustettuna osoitteessa:

    https://odoo.rockit.fi

    Koska olen luomassa sertifikaattia odoo-nimiselle rockit.fi -domainin alidomainille, minun on ensiksi varmistuttava, että rockit.fi:n DNS-konfigurointi on tehty niin, että nimipalvelimet tietävät, miltä serveriltä tuollaista odoo.rockit.fi -osoitetta pitää lähteä hakemaan. Tarvittavan A-recordin pääsen luomaan rockit.fi-verkkotunnukseni cPanelissa:

    Olen onnistunut aiemmin tekemään vastaavat asennukset Odoo 8 ja Odoo 9 ympäristöille ja eri Ubuntu-versioille näitä kahta löytämääni ohjetta yhdistelemällä, joten oletan saman onnistuvan myös Odoo 10 -versiolle ja Ubuntu 16.04 -virtuaaliserverille:

    1. How To Secure Nginx with Let’s Encrypt on Ubuntu 14.04
    2. REVERSE PROXY WITH ODOO 8 | NGINX | UBUNTU 14.04 LTS | LONGPOLLING

    Let’s Encrypt SSL-sertifikaatin luonti

    Aloitetaan siitä, mihin edellisessä ohjeessa jäätiin, eli ollaan kirjautuneena serverille ssh-yhteydellä (ssh root@<IP-osoite>). Aluksi käskyt ohjeen 1 mukaisesti. Kannattaa seurata noita alkuperäisiä ohjeita, koska niissä myös selitetään, mitä ollaan tekemässä. Tähän ohjeeseen laitan vain muistilistaa itselleni, jos nuo alkuperäiset ohjeet vaikka häviävät tuolta linkin takaa.

    cd /usr/local/sbin

    sudo wget https://dl.eff.org/certbot-auto

    sudo chmod a+x /usr/local/sbin/certbot-auto

    sudo apt-get update

    sudo apt-get install nginx

    sudo apt-get install nano

    sudo nano /etc/nginx/sites-available/default

    Muokataan aukaistun default-tiedoston sisällöksi:

    server {

    listen 80 default_server;

    listen [::]:80 default_server;

    root /usr/share/nginx/html;

    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location ~ /.well-known {

    allow all;

    }

    }

    Mikäli kaikki on mennyt oikein, seuraavan syntaxin tarkistuksen tuloksen pitäisi olla ok:

    sudo nginx -t

    Jonka jälkeen Nginxin uudelleenkäynnistys komennolla (serverilläni ei jostain syystä toimi ohjeen mukainen komento “sudo service nginx restart”):

    sudo /etc/init.d/nginx restart

    Tämän jälkeen jatketaan luomalla SSL-sertifikaatti. Mikäli luot sertejä samalla useammalle verkkotunnukselle/aliverkkotunnukselle, erottele tunnukset -d:llä ohjeen mukaisesti:

    Now that we know our webroot-path, we can use the Webroot plugin to request an SSL certificate with these commands. Here, we are also specifying our domain names with the -d option. If you want a single cert to work with multiple domain names (e.g. example.com and www.example.com), be sure to include all of them, starting with the most high level domain (e.g. example.com).

    certbot-auto certonly -a webroot –webroot-path=/usr/share/nginx/html -d example.com -d www.example.com

    Koska olen nyt luomassa sertifikaattia ainoastaan aliverkkotunnukselle odoo.rockit.fi, komento on:

    certbot-auto certonly -a webroot –webroot-path=/usr/share/nginx/html -d odoo.rockit.fi

    Tuon jälkeen näytölle ilmestyy ruutuja missä kysellään sähköpostiosoitetta (for urgent notices and lost key recovery) ja hyväksyntää. Lopulta ruudulle pitäisi tulla ilmoitus, josta käy ilmi, että sertifikaatti on onnistuneesti asennettu: “Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/odoo.rockit.fi/fullchain.pem. Your cert will expire on…”

    Suojausta voi edelleen kasvattaa luomalla “strong Diffie-Hellman group”:n:

    sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

    Edellä luotuja sertifikaattitiedostoja käytämme Nginx-konfiguroinnissa myöhemmin.

    Sertifikaatin automaattinen uusiminen

    Avoimen lähdekoodin Let’s Encrypt -sertifikaatti on voimassa 90 päivää. Teemme ohjeen mukaan tausta-ajon (cron job), joka uusii sertifikaatin joka maanantai kello 02:30 ja lataa uudelleen Nginxin 02:35:

    sudo crontab -e

    Ja kopioi tiedostoon rivit:

    30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log

    35 2 * * 1 /etc/init.d/nginx reload

    (paina i-kirjainta päästäksesi insert-moodiin ja esc-näppäintä poistuaksesi insert-tilasta rivien kopioinnin jälkeen. Editorista poistutaan kirjoittamalla 😡 ja painamalla enter)

    Nginx-webbipalvelimen konfigurointitiedoston luominen

    sudo nano /etc/nginx/sites-available/odoo 

    Kopioi tiedostoon sisältö. Muokkaa “odoo”:n paikalle käyttämäsi aliverkkotunnuksen nimi:

    upstream odoo {

    server 127.0.0.1:8069 weight=1 fail_timeout=0;

    }

    upstream odoo-im {

    server 127.0.0.1:8072 weight=1 fail_timeout=0;

    }

    ## http redirects to https ##

    server {

    listen 80;

    server_name odoo.rockit.fi;

    # Strict Transport Security

    add_header Strict-Transport-Security max-age=2592000;

    rewrite ^/.*$ https://$host$request_uri? permanent;

    }

    server {

    # server port and name

    listen 443;

    server_name odoo.rockit.fi;

    # Specifies the maximum accepted body size of a client request,

    # as indicated by the request header Content-Length.

    client_max_body_size 200m;

    # add ssl specific settings

    keepalive_timeout 60;

    ssl on;

    ssl_certificate /etc/letsencrypt/live/odoo.rockit.fi/fullchain.pem;

    ssl_certificate_key /etc/letsencrypt/live/odoo.rockit.fi/privkey.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_prefer_server_ciphers on;

    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    ssl_ciphers ‘ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA’;

    ssl_session_timeout 1d;

    ssl_session_cache shared:SSL:50m;

    ssl_stapling on;

    ssl_stapling_verify on;

    add_header Strict-Transport-Security max-age=15768000;

    # limit ciphers

    # ssl_ciphers HIGH:!ADH:!MD5;

    # ssl_protocols SSLv3 TLSv1;

    # ssl_prefer_server_ciphers on;

    # increase proxy buffer to handle some OpenERP web requests

    proxy_buffers 16 64k;

    proxy_buffer_size 128k;

    #general proxy settings

    # force timeouts if the backend dies

    proxy_connect_timeout 600s;

    proxy_send_timeout 600s;

    proxy_read_timeout 600s;

    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

    # set headers

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;

    # Let the OpenERP web service know that were using HTTPS, otherwise

    # it will generate URL using http:// and not https://

    proxy_set_header X-Forwarded-Proto https;

    # by default, do not forward anything

    proxy_redirect off;

    proxy_buffering off;

    location / {

    proxy_pass http://odoo;

    }

    location /longpolling {

    proxy_pass http://odoo-im;

    }

    # cache some static data in memory for 60mins.

    # under heavy load this should relieve stress on the OpenERP web interface a bit.

    location /web/static/ {

    proxy_cache_valid 200 60m;

    proxy_buffering on;

    expires 864000;

    proxy_pass http://odoo;

    }

    }

    Tämän jälkeen sivun enablointi luomalla “symbolinen linkki” site-enabled -hakemistoon:

    sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/odoo

    Odoon konfigurointi

    sudo nano /etc/odoo-server.conf

    Etsi ja muokkaa parametreihin alla olevat arvot:

    dbfilter = ^%d$

    xmlrpc_interface = 127.0.0.1

    Tämän jälkeen tarvitaan enää odoo-serverin ja nginxin uudelleenkäynnistys:

    sudo /etc/init.d/odoo-server restart

    sudo /etc/init.d/nginx restart

    Jostain syystä tuo dbfilter ei kuitenkaan toiminut tuon restartin jälkeen. Kaikki oli kuitenkin kunnossa sen jälkeen, kun olin bootannut koko serverin komennolla:

    sudo reboot 0

    in Tech Blog
    Disable screensaver Ubuntu

    Designed for companies

    We are a team of passionate people whose goal is to improve everyone's life through disruptive products. We build great products to solve your business problems. Our products are designed for small to medium size companies willing to optimize their performance.

    Get in touch

    Plantexel
    Pedernera
    Salta Capital 
    Argenina

    • +31 653-919-302
    • [email protected]
    Follow us
    Copyright © Plantexel
    Nederlands | English (US) | Español (AR)