Passo 11. SSL para OpenERP no Ubuntu 10.04 LTS
Intenção e variantes de busca
- Intenção principal: configurar SSL para OpenERP (agora Odoo) no Ubuntu 10.04
- Variantes: SSL OpenERP Apache, OpenERP HTTPS Ubuntu, configurar SSL OpenERP WebDAV, XML-RPC seguro OpenERP
Introdução
Neste documento descrevo um fluxo prático para fornecer acesso criptografado (SSL/TLS) a um servidor OpenERP (versão compatível com Ubuntu 10.04 LTS). Usamos o Apache como proxy reverso e ponto de terminação SSL para o cliente web e para WebDAV/CalDAV. O cliente GTK usa XML-RPC seguro direto ao OpenERP. A escolha por certificados autoassinados é intencional para este guia de implantação local; para ambientes de produção, considere uma autoridade certificadora confiável.
Importante: o pacote Apache no Debian/Ubuntu tem caminhos e convenções específicas. Consulte /usr/share/doc/apache2.2-common/README.Debian.gz no seu servidor para detalhes do empacotamento e layout.
Pré-requisitos
- Servidor Ubuntu 10.04 LTS com acesso root ou sudo
- OpenERP e OpenERP Web instalados e funcionando
- Conectividade localhost entre Apache e serviços OpenERP
- Noções básicas de OpenSSL e edição de arquivos no terminal
Resumo da metodologia
- Instalar Apache e módulos necessários. 2. Gerar chave e certificado SSL. 3. Criar configuração de VirtualHost em Apache para 443. 4. Ajustar /etc/openerp-server.conf e /etc/openerp-web.conf para ouvir apenas em localhost e apontar para os arquivos SSL. 5. Reiniciar serviços e testar.
Passo 11.1. Instalar Apache e módulos necessários
Instale o Apache e habilite módulos usados como proxy e SSL.
Execute no servidor:
sudo apt-get install apache2
Em seguida, habilite os módulos necessários (mod_ssl, mod_proxy_http, mod_headers e opcional mod_rewrite):
sudo a2enmod ssl proxy_http headers rewrite
Importante: mod_ssl provê a terminação SSL; mod_proxy e mod_proxy_http fazem o proxy reverso; headers permite definir X-Forwarded-Proto, e rewrite ajuda com redirecionamentos HTTP→HTTPS.
Passo 11.2. Criar o certificado e a chave (autoassinados)
Criamos os arquivos em um diretório temporário e, depois, movemos para /etc/ssl/openerp.
cd
mkdir temp
cd temp
Gere uma nova chave privada (você será solicitado a digitar uma frase-senha):
openssl genrsa -des3 -out server.pkey 1024
Remova a frase-senha para evitar digitar no boot:
openssl rsa -in server.pkey -out server.key
Crie uma Certificate Signing Request (CSR):
openssl req -new -key server.key -out server.csr
Você verá prompts para preencher campos do certificado (Country, State, Locality, Organization, Common Name etc.). Para Common Name, use o domínio público ou o IP que os clientes usarão (ex.: your-ip-or-domain).
Autoassine o certificado por 365 dias (ajuste se necessário):
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Ajuste proprietários e permissões:
sudo chown openerp:root server.crt server.key
sudo chmod 640 server.crt server.key
Crie o diretório final e mova os arquivos:
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/
Agora a chave e o certificado estão armazenados com permissões restritas.
Passo 11.3. Criar a configuração de site do Apache
Crie um novo VirtualHost para o SSL:
sudo nano /etc/apache2/sites-available/openerp-ssl
Cole o conteúdo abaixo (mantive a lógica original separando /webdav/ e /):
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
Notas rápidas:
- Mantive ProxyPass separado para /webdav/ (aponta para o XML-RPC do OpenERP) e para / (aponta para a interface web local na porta 8080).
- A ordem importa: /webdav/ deve estar antes de /.
Habilite o novo site:
sudo a2ensite openerp-ssl
Redirecionamento HTTP → HTTPS (opcional)
Para redirecionar visitantes HTTP para HTTPS, ative mod_rewrite e adicione no arquivo /etc/apache2/sites-available/default (fora de blocos
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
Isso força navegadores a usar HTTPS.
Passo 11.4. Ajustar as configurações do OpenERP e do cliente web
Edite /etc/openerp-server.conf para que serviços não-encriptados escutem apenas em localhost. Também informe onde estão chave e certificado para XMLRPC-SSL.
sudo nano /etc/openerp-server.conf
Defina os parâmetros (exemplo):
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 usar WebDAV/CalDAV, adicione ao final do arquivo:
[webdav]
enable = True
vdir = webdav
Em seguida, ajuste o arquivo do cliente web para aceitar somente conexões locais e trabalhar atrás de proxy:
sudo nano /etc/openerp-web.conf
Exemplo de parâmetros (corrigido para aspas simples/dobradas corretas):
# Alguns parâmetros do servidor que você pode ajustar
server.socket_host = "127.0.0.1"
# Defina True se estiver implantando atrás de um proxy (ex.: Apache com mod_proxy)
tools.proxy.on = True
# Se o proxy não adicionar X-Forwarded-Host, informe a URL pública
tools.proxy.base = 'https://your-ip-or-domain'
# Defina False para desabilitar verificações CSRF (não recomendado em geral)
tools.csrf.on = False
Observação: mantenha tools.proxy.on = True para que o cliente web gere URLs públicas corretas quando estiver atrás do Apache.
Passo 11.5. Reiniciar e testar
Reinicie os serviços para carregar as novas configurações:
sudo service openerp-server restart
sudo service openerp-web restart
sudo service apache2 restart
Testes principais:
- A interface web NÃO deve responder em http://seu-servidor:8080 (apenas via Apache/HTTPS).
- A interface web deve abrir em https://your-ip-or-domain.
- Cliente GTK: use porta 8071 e protocolo XML-RPC (Secure) para conectar.
Exemplo de URL CalDAV para um calendário:
https://your-ip-or-domain/webdav/DB_NAME/calendars/users/USERNAME/c/CALENDAR_NAME
Checklist por função
- Administrador de sistema:
- Verificar pacotes: apache2, openssl, módulos habilitados
- Criar diretório /etc/ssl/openerp e aplicar permissões
- Habilitar site openerp-ssl e reiniciar apache
- Administrador OpenERP:
- Atualizar /etc/openerp-server.conf e /etc/openerp-web.conf
- Ativar webdav se necessário
- Reiniciar serviços do OpenERP
- Usuário final / Desktop:
- Para GTK, configurar conexão com IP/host e porta 8071 (XML-RPC seguro)
- Para Web, abrir https://your-ip-or-domain
Resolução de problemas comuns
- Erro: Apache não sobe após habilitar site
- Verifique sintaxe: sudo apache2ctl configtest
- Revise logs: /var/log/apache2/error.log
- Erros de permissão ao acessar /etc/ssl/openerp/server.key
- Confirme proprietário (openerp:root) e permissões 640. Apache precisa apenas do certificado; o OpenERP precisa da chave.
- Conexão recusada ao acessar porta 8071
- Confirme xmlrpcs_interface = 127.0.0.1 e xmlrpcs_port = 8071 no /etc/openerp-server.conf
- Reinicie openerp-server
- WebDAV devolve 408/409 no IE
- A linha SetEnv proxy-nokeepalive 1 no VirtualHost mitiga esse problema
- Certificado autoassinado causa aviso no navegador
- Esperado: navegadores alertam. Para evitar, use certificado emitido por AC confiável.
Quando essa solução falha (contraexemplos) e alternativas
- Implantação em ambiente com domínio público e vários serviços: prefira certificados de uma CA pública (Let’s Encrypt, AC comercial) para evitar avisos.
- Escalabilidade e balanceamento: em topologias com balanceador na frente do Apache, mova a terminação SSL para o balanceador ou use certificados no próprio load balancer.
- Compliance/segurança rígida: ative TLS moderno (desabilite SSLv3/RC4), configure ciphers e HSTS. Para isso, ajuste configurações SSL no Apache e use ferramentas de hardening.
Mini-cheat sheet de comandos
- Instalar Apache: sudo apt-get install apache2
- Habilitar módulos: sudo a2enmod ssl proxy_http headers rewrite
- Criar chave e CSR: openssl genrsa -des3 -out server.pkey 1024; openssl rsa -in server.pkey -out server.key; openssl req -new -key server.key -out server.csr
- Autoassinar: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
- Permissões: sudo chown openerp:root server.crt server.key; sudo chmod 640 server.crt server.key
- Mover para /etc/ssl/openerp: sudo mkdir /etc/ssl/openerp; sudo mv server.crt server.key /etc/ssl/openerp/
- Habilitar site: sudo a2ensite openerp-ssl
- Reiniciar serviços: sudo service openerp-server restart; sudo service openerp-web restart; sudo service apache2 restart
Fluxo de decisão (mermaid)
flowchart TD
A[Começar: OpenERP em Ubuntu] --> B{Tem domínio público?}
B -- Sim --> C{Usar CA confiável?}
B -- Não --> D[Usar certificado autoassinado]
C -- Sim --> E[Obter certificado 'Let's Encrypt/CA']
C -- Não --> D
E --> F[Instalar certificado no Apache]
D --> F
F --> G[Configurar ProxyPass / e /webdav/]
G --> H[Ajustar configs openerp-server e openerp-web]
H --> I[Testar HTTPS e XML-RPC seguro]
Glossário (uma linha cada)
- SSL/TLS: protocolos de criptografia para tráfego HTTP e serviços remotos.
- Proxy reverso: servidor que recebe requisições do cliente e as repassa a um servidor backend.
- XML-RPC: protocolo remoto usado pelo cliente GTK para comunicar com o OpenERP.
- WebDAV/CalDAV: extensões HTTP para manipulação de arquivos e calendários, respectivamente.
Notas de segurança e boas práticas
- Em produção, prefira certificados de uma CA pública para evitar warnings.
- Atualize o OpenERP e o sistema operacional para mitigar vulnerabilidades.
- Considere desabilitar protocolos antigos (SSLv3) e restringir conjuntos de cifragem no Apache.
- Armazene chaves privadas com permissões estritas e, se possível, use HSM ou gerenciadores de segredos.
Sumário
- Instalamos Apache e módulos SSL/proxy.
- Geramos chave privada, CSR e autoassinamos o certificado.
- Criamos um VirtualHost em :443 com ProxyPass para /webdav/ (porta 8069 XMLRPC) e / (porta 8080 web).
- Ajustamos /etc/openerp-server.conf e /etc/openerp-web.conf para ouvir apenas em localhost e apontar para certificados.
- Reiniciamos serviços e testamos acesso HTTPS, cliente GTK (XML-RPC seguro) e CalDAV.
Se precisar, posso adicionar uma seção com exemplos de configuração TLS mais rígida para Apache (ciphers, protocolos, HSTS) ou fornecer uma versão do VirtualHost compatível com Apache 2.4 se você estiver usando uma versão posterior.
Materiais semelhantes

Ver contagem de dislikes no YouTube — guia completo

Proteger dados em desastres naturais

Proteção contra BYOVD: evitar drivers assinados vulneráveis
SSL para OpenERP no Ubuntu — guia passo a passo

Como escolher os melhores provedores de VPN
