Passo 11 — SSL per OpenERP su Ubuntu 10.04 LTS
In questa guida configuriamo Apache come proxy con terminazione SSL per un server OpenERP su Ubuntu 10.04 LTS usando certificati self-signed. Copriamo installazione dei moduli Apache, generazione della chiave e del certificato, configurazione dei VirtualHost, aggiornamento dei file di configurazione di OpenERP e del web client, test e suggerimenti di hardening e alternative pratiche.
Importante: in questa procedura usiamo certificati autofirmati (self-signed). Per ambienti di produzione valutare certificati emessi da una CA pubblica o soluzioni gratuite come Let’s Encrypt.
Per chi è questa guida
Questa guida è pensata per amministratori di sistema e operatori DevOps che gestiscono un’istanza OpenERP (ora Odoo) su server Ubuntu e vogliono mettere HTTPS davanti ai servizi web e WebDAV/CalDAV. Conoscenze di base di Linux, Apache e OpenSSL sono utili.
Varianti dell’intento principale
- Configurare SSL per OpenERP
- Apache come reverse proxy per OpenERP
- Abilitare WebDAV/CalDAV sicuro per OpenERP
- Generare certificati self-signed per servizi interni
- Hardening TLS per Apache su server legacy
Sommario rapido dei passaggi
- Installare Apache e abilitare i moduli necessari
- Generare chiave, CSR e certificato self-signed
- Mettere chiave e certificato in /etc/ssl/openerp con permessi adeguati
- Creare un VirtualHost HTTPS che instrada /webdav/ e / verso OpenERP
- Modificare /etc/openerp-server.conf e /etc/openerp-web.conf per ascoltare solo su localhost e puntare ai file TLS
- Riavviare i servizi e testare
- Applicare hardening TLS e considerare alternative con CA pubblica
11.1 Installare Apache e i moduli richiesti
Sul server, installa apache2:
sudo apt-get install apache2
Abilita i moduli che ci serviranno: SSL, proxy HTTP, header e (opzionale) rewrite:
sudo a2enmod ssl proxy_http headers rewrite
Questi moduli permettono ad Apache di terminare TLS, agire da reverse proxy verso OpenERP e impostare header utili come X-Forwarded-Proto.
Nota: su Debian/Ubuntu la struttura dei file di configurazione Apache è diversa da altre distro. Un file utile sul server è /usr/share/doc/apache2.2-common/README.Debian.gz.
11.2 Creare la chiave e il certificato
In una cartella temporanea creiamo la chiave privata, rimuoviamo la passphrase per l’avvio automatico e generiamo una CSR (Certificate Signing Request), infine autografiamo il certificato.
Esempio di comandi consigliati:
cd
mkdir temp
cd temp
Genera una nuova chiave privata (ti verrà chiesto di inserire una passphrase):
openssl genrsa -des3 -out server.pkey 1024
Rimuovi la passphrase dalla chiave in modo che il server possa avviarsi automaticamente:
openssl rsa -in server.pkey -out server.key
Crea la CSR per il certificato (compila i campi richiesti):
openssl req -new -key server.key -out server.csr
Compila i campi del Distinguished Name (DN). Per il Common Name (CN) inserisci il nome host pubblico o l’indirizzo IP con cui gli utenti accederanno (es. example.com o 203.0.113.5).
Infine auto-firma il certificato per 365 giorni:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Imposta proprietà e permessi corretti prima di spostare i file in una directory di sistema:
sudo chown openerp:root server.crt server.key
sudo chmod 640 server.crt server.key
Crea una directory dedicata e muovi i file:
sudo mkdir /etc/ssl/openerp
sudo chown openerp:root /etc/ssl/openerp
sudo chmod 710 /etc/ssl/openerp
sudo mv server.crt server.key /etc/ssl/openerp/
Importante: conservare la chiave privata in un percorso protetto e con permessi stretti. Se la chiave viene compromessa, rigenerare subito il certificato.
11.3 Creare il file di configurazione del sito Apache
Creiamo un VirtualHost che ascolti sulla porta 443 e faccia da proxy per le richieste web e WebDAV:
sudo nano /etc/apache2/sites-available/openerp-ssl
Contenuto suggerito del file:
SSLEngine on
SSLCertificateFile /etc/ssl/openerp/server.crt
SSLCertificateKeyFile /etc/ssl/openerp/server.key
ProxyRequests Off
Order deny,allow
Allow from all
ProxyVia On
ProxyPass /webdav/ http://127.0.0.1:8069/webdav/
ProxyPassReverse /webdav/
Order Deny,Allow
Allow from all
Satisfy Any
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse /
RequestHeader set "X-Forwarded-Proto" "https"
# Fix IE problem (httpapache proxy dav error 408/409)
SetEnv proxy-nokeepalive 1
Spiegazioni rapide:
- /webdav/ è instradato verso la porta XMLRPC di OpenERP dove risiede WebDAV/CalDAV.
- / (la root) è instradata verso il web client ascoltante su porta 8080.
- L’ordine è importante: /webdav/ deve essere dichiarato prima di /.
- RequestHeader set “X-Forwarded-Proto” “https” permette all’applicazione backend di conoscere lo schema originale della richiesta.
Abilita il sito:
sudo a2ensite openerp-ssl
Redirect da HTTP a HTTPS (opzionale)
Se desideri forzare il redirect delle richieste HTTP verso HTTPS, aggiungi queste righe nel file /etc/apache2/sites-available/default (fuori da blocchi
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
Questa regola reindirizza tutte le richieste sulla porta 80 verso il corrispondente URL HTTPS.
11.4 Modificare la configurazione di OpenERP e del web client
Per impedire l’accesso non cifrato dall’esterno, configura i servizi in modo che ascoltino solo su localhost.
Modifica il file /etc/openerp-server.conf:
sudo nano /etc/openerp-server.conf
Aggiorna/conferma i parametri seguenti:
xmlrpc = True
xmlrpc_interface = 127.0.0.1
xmlrpc_port = 8069
netrpc = True
netrpc_interface = 127.0.0.1
netrpc_port = 8070
xmlrpcs = True
xmlrpcs_interface = 127.0.0.1
xmlrpcs_port = 8071
secure_pkey_file = /etc/ssl/openerp/server.key
secure_cert_file = /etc/ssl/openerp/server.crt
Se vuoi abilitare WebDAV/CalDAV aggiungi alla fine del file:
[webdav]
enable = True
vdir = webdav
Poi modifica il file di configurazione del web client /etc/openerp-web.conf:
sudo nano /etc/openerp-web.conf
Esempio di impostazioni consigliate:
# Some server parameters that you may want to tweak
server.socket_host = "127.0.0.1"
# Set to True if you are deploying your App behind a proxy
# e.g. Apache using mod_proxy
tools.proxy.on = True
# If your proxy does not add the X-Forwarded-Host header, set
# the following to the public host url.
tools.proxy.base = "https://your-ip-or-domain"
# Set to false to disable CSRF checks
tools.csrf.on = False
Nota: tools.proxy.base deve contenere l’URL pubblico che gli utenti usano. Mantieni tools.csrf.on = False solo se sai cosa stai facendo e se hai altre protezioni a livello di proxy.
11.5 Riavviare i servizi e verificare
Riavvia i servizi per applicare le modifiche:
sudo service openerp-server restart
sudo service openerp-web restart
sudo service apache2 restart
Verifiche previste:
- Il web client non dovrebbe essere raggiungibile su porta 8080 dall’esterno.
- Il client GTK dovrebbe usare la porta 8071 (XMLRPC SSL) se configurato per XMLRPC (secure).
- Accedi via browser a: https://your-ip-or-domain
- URL per CalDAV (esempio):
https://your-ip-or-domain/webdav/DB_NAME/calendars/users/USERNAME/c/CALENDAR_NAME
Se visualizzi avvisi di certificato nel browser, è normale con certificati self-signed: dovrai importare il certificato sul client oppure distribuire un certificato firmato da una CA riconosciuta.
Hardening TLS consigliato
Per migliorare la sicurezza TLS su Apache e ridurre l’uso di protocolli e cifre deboli, aggiungi (o verifica) le seguenti direttive nel file di configurazione SSL (es. /etc/apache2/mods-available/ssl.conf o all’interno del VirtualHost):
# Disabilita SSLv2 e SSLv3
SSLProtocol all -SSLv2 -SSLv3
# Selezione di cifre più sicure (esempio minimale)
SSLCipherSuite HIGH:!aNULL:!MD5:!RC4
SSLHonorCipherOrder on
Ulteriori passi consigliati:
- Tenere aggiornato OpenSSL e Apache quando possibile.
- Limitare l’accesso alla directory contenente la chiave privata.
- Abilitare HSTS (solo dopo aver verificato che tutto funzioni su HTTPS):
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Attenzione: HSTS forza l’uso di HTTPS e può rendere difficile tornare a HTTP temporaneamente.
Alternative e quando i self-signed non bastano
Alternative pratiche:
- Certificati di una CA pubblica: risolvono gli avvisi nei browser e semplificano l’uso mobile.
- Let’s Encrypt: emette certificati gratuiti e automatici; ideale per ambienti con dominio pubblico.
- PKI interna: usare una CA aziendale e distribuire il certificato radice ai client gestiti.
Quando i certificati self-signed falliscono:
- Client mobili o app che rifiutano connessioni non fidate.
- Condivisione del servizio con terze parti che richiedono CA pubbliche.
- Automazione di integrazioni esterne che verificano la catena di fiducia.
Decisione rapida (diagramma):
flowchart TD
A[Hai un dominio pubblico?] -->|Sì| B{Vuoi automazione gratuita?}
A -->|No| C[Usa cert self-signed o CA interna]
B -->|Sì| D[Let's Encrypt]
B -->|No| E[CA commerciale o certificato a pagamento]
C --> F[Distribuisci radice ai client gestiti]
Checklist per ruolo
Amministratore di sistema:
- Installare e abilitare moduli Apache
- Generare e proteggere chiave privata
- Configurare VirtualHost HTTPS
- Aggiornare openerp-server.conf e openerp-web.conf
- Riavviare e testare servizi
- Applicare hardening TLS
Sviluppatore / integratore:
- Verificare che X-Forwarded-Proto arrivi al backend
- Testare web client e autenticazione via HTTPS
- Testare WebDAV/CalDAV con client esterni
Utente finale:
- Testare accesso web via browser HTTPS
- Se necessario, importare certificato self-signed nel browser/dispositivo
Criteri di accettazione
- L’accesso web pubblico avviene esclusivamente su HTTPS (porta 443).
- I servizi backend (8080, 8069, 8070) non sono accessibili direttamente dall’esterno.
- WebDAV/CalDAV funzionano via HTTPS e restituiscono risposte corrette alle richieste PROPFIND/REPORT.
- Le chiavi private sono accessibili solo dall’utente openerp (permessi ristretti).
Test di base e casi di verifica
Test funzionali:
- Browser: aprire https://your-ip-or-domain e confermare caricamento dell’interfaccia web.
- GTK client: connettersi usando protocollo XMLRPC (Secure) su porta 8071.
- WebDAV client: effettuare PROPFIND su https://your-ip-or-domain/webdav/DB_NAME/ e verificare risposta 207 Multi-Status.
- Port scan esterno: verificare che 8080, 8069, 8070 non siano raggiungibili dall’esterno.
Log utili per debug:
- /var/log/apache2/error.log
- /var/log/apache2/access.log
- Log di OpenERP (controllare la posizione nei file di configurazione del server)
Snippet e cheat sheet rapido
Comandi principali riassunti:
# Installare Apache e moduli
sudo apt-get install apache2
sudo a2enmod ssl proxy_http headers rewrite
# Generare chiave e certificato
openssl genrsa -des3 -out server.pkey 1024
openssl rsa -in server.pkey -out server.key
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
# Permessi e spostamento
sudo chown openerp:root server.crt server.key
sudo chmod 640 server.crt server.key
sudo mkdir /etc/ssl/openerp
sudo chown openerp:root /etc/ssl/openerp
sudo chmod 710 /etc/ssl/openerp
sudo mv server.crt server.key /etc/ssl/openerp/
# Abilitare sito e riavviare
sudo a2ensite openerp-ssl
sudo service openerp-server restart
sudo service openerp-web restart
sudo service apache2 restart
Problemi comuni e soluzioni rapide
- Errore di certificato nel browser: importare il certificato self-signed nel truststore del client o usare una CA riconosciuta.
- WebDAV non risponde: verificare ProxyPass /webdav/ e che xmlrpc sia attivo e in ascolto su 8069.
- Permessi chiave errati: assicurarsi che server.key non sia leggibile da altri (chmod 640) e proprietario openerp.
Nota: se riscontri errori 502/504 da Apache, controlla che OpenERP sia in ascolto sulle porte 8080/8069 e che non ci siano problemi di firewall locale.
Riepilogo
Questa guida spiega come terminare TLS con Apache per un’istanza OpenERP su Ubuntu 10.04 LTS usando certificati self-signed. Vengono mostrati i comandi per generare chiavi e certificati, la configurazione del VirtualHost HTTPS per instradare sia il web client che WebDAV, le modifiche da applicare ai file di configurazione di OpenERP e consigli pratici di hardening. Valuta l’uso di certificati emessi da una CA pubblica per ambienti in produzione o per dispositivi che non possono importare certificati self-signed.
Grazie per aver letto — eventuali commenti o suggerimenti sono benvenuti.
Materiali simili

Installare e automatizzare OpenERP su Ubuntu

Vedere i "non mi piace" su YouTube: estensione e Android

Proteggi i tuoi dati da uragani e alluvioni

Protezione BYOVD: Evitare il bypass di Microsoft Defender
SSL per OpenERP su Ubuntu — guida completa
