Paso 11. SSL
Objetivo principal
Proporcionar acceso cifrado HTTPS y canales seguros XMLRPC/NetRPC para OpenERP, y asegurar que solo Apache exponga servicios al exterior.
Variantes relacionadas de búsqueda
- configurar SSL OpenERP
- OpenERP SSL Ubuntu
- Apache proxy SSL OpenERP
- certificado SSL autofirmado OpenERP
- WebDAV CalDAV SSL OpenERP
Requisitos previos
- Servidor Ubuntu 10.04 LTS con OpenERP instalado.
- Acceso root o sudo.
- Paquetes básicos: openssl, apache2.
- Conocimientos básicos de Apache y administración Linux.
Important: En esta guía usamos certificados autofirmados. Para un entorno de producción, considere certificados de una CA pública como Let’s Encrypt o una CA interna.
Paso 11.1. Instalar Apache y módulos necesarios
Instale Apache en el servidor:
sudo apt-get install apache2
Habilite los módulos que necesitaremos (SSL, proxy, headers y opcionalmente rewrite):
sudo a2enmod ssl proxy_http headers rewrite
Paso 11.2. Crear el certificado y la clave
Cree un directorio temporal y genere la clave privada cifrada:
cd
mkdir temp
cd temp
Generar una clave privada (se pedirá una frase de paso):
openssl genrsa -des3 -out server.pkey 1024
Eliminar la frase de paso para evitar pedirla en cada arranque:
openssl rsa -in server.pkey -out server.key
Crear una petición de firma (CSR):
openssl req -new -key server.key -out server.csr
Durante este paso se le preguntará por campos como país, provincia, localidad, organización, unidad organizativa, nombre común (Common Name) y correo electrónico. El campo “Common Name” debe ser el dominio o IP pública que usarán los clientes.
Firmar el certificado de forma autofirmada (válido 365 días en este ejemplo):
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Asegure propiedad y permisos adecuados:
sudo chown openerp:root server.crt server.key
sudo chmod 640 server.crt server.key
Mover los archivos a una ubicación sensata y protegida:
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/
Paso 11.3. Crear el archivo de configuración del sitio en Apache
Crear un nuevo VirtualHost para SSL:
sudo nano /etc/apache2/sites-available/openerp-ssl
Pegar la siguiente configuración (adecuada para OpenERP con WebDAV y cliente web):
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: la configuración contiene dos secciones Proxy: una para /webdav/ (apunta al puerto XMLRPC de OpenERP) y otra para / (apunta al cliente web en 8080). El orden importa: si la ruta / precede a /webdav/ la segunda nunca coincidirá.
Habilite el sitio:
sudo a2ensite openerp-ssl
Opcional: forzar redirección de HTTP a HTTPS usando mod_rewrite. Añada estas líneas en /etc/apache2/sites-available/default (fuera de bloques
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
Paso 11.4. Cambios en OpenERP server y web-client
Edite /etc/openerp-server.conf para que los servicios no cifrados escuchen solo en localhost y para indicar la ruta de la clave y el certificado:
sudo nano /etc/openerp-server.conf
Asegúrese de incluir o ajustar estas líneas:
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 =
xmlrpcs_port = 8071
secure_pkey_file = /etc/ssl/openerp/server.key
secure_cert_file = /etc/ssl/openerp/server.crt
Si desea WebDAV/CalDAV, añada al final del archivo:
[webdav]
enable = True
vdir = webdav
Edite el fichero de configuración del cliente web /etc/openerp-web.conf para que el front-end web solo acepte conexiones desde localhost y sepa que va detrás de un proxy:
sudo nano /etc/openerp-web.conf
Asegúrese de que las líneas relevantes quedan así (comillas estándar):
# 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
Consejo: reemplace ‘https://your-ip-or-domain’ por la URL pública real usada por los usuarios.
Paso 11.5. Probar la configuración
Reinicie los servicios para aplicar cambios:
sudo service openerp-server restart
sudo service openerp-web restart
sudo service apache2 restart
Comprobaciones rápidas:
- El puerto 8080 no debe estar accesible desde fuera.
- El cliente GTK debe usar el puerto 8071 con protocolo XMLRPC (Secure).
- Abra https://your-ip-or-domain en un navegador; acepte el certificado si es autofirmado.
URL ejemplo para CalDAV:
https://your-ip-or-domain/webdav/DB_NAME/calendars/users/USERNAME/c/CALENDAR_NAME
Lista de verificación rápida para el administrador
- Apache instalado y módulos ssl, proxy_http, headers activos.
- Certificado y clave ubicados en /etc/ssl/openerp con permisos 640.
- VirtualHost habilitado (openerp-ssl).
- openerp-server.conf y openerp-web.conf limitan interfaces a 127.0.0.1.
- Servicios reiniciados y comprobados.
- Pruebas de acceso HTTPS y clientes configurados.
Modelo mental y metodología breve
Mental model: Apache actúa como “terminador SSL” y proxy inverso. Apache recibe tráfico HTTPS, descifra, y reenvía tráfico HTTP interno a puertos locales de OpenERP (web client y WebDAV). El servidor OpenERP mantiene servicios no cifrados, pero solo en localhost.
Mini-metodología:
- Generar/instalar certificados.
- Configurar Apache para SSL y proxy.
- Restringir interfaces en OpenERP a localhost.
- Reiniciar servicios y validar conexiones.
Alternativas y cuándo elegir cada una
- Nginx en lugar de Apache: Nginx es más eficiente en entornos con alta concurrencia y uso de recursos reducido. El procedimiento es similar: configurar Nginx como proxy inverso y manejar SSL.
- Certificados de CA pública (Let’s Encrypt): Use Let’s Encrypt para eliminar advertencias de certificados autofirmados. Recomendado para producción pública.
- VPN o túneles SSH: Si el número de usuarios es pequeño y desea mayor aislamiento, un túnel VPN puede limitar exposición sin gestionar certificados públicos.
Cuando evitar este enfoque:
- No use certificados autofirmados en entornos donde la confianza del navegador/cliente sea crítica sin gestionar la confianza a nivel de empresa.
- Si necesita soporte para múltiples dominios con automatización, prefiera Let’s Encrypt o una solución de gestión de certificados.
Riesgos comunes y mitigaciones
- Riesgo: clave privada expuesta. Mitigación: permisos estrictos, propietario openerp, directorio 710.
- Riesgo: certificado autofirmado provoca advertencias y rechazo. Mitigación: emitir certificados desde CA interna o Let’s Encrypt.
- Riesgo: configuración de proxy incorrecta deja puertos abiertos. Mitigación: verificar con nmap/ss y revisar configuración de escucha en confs.
Solución de problemas rápida
- No carga HTTPS: comprobar que Apache tiene mod_ssl activo y que el VirtualHost escucha en :443.
- WebDAV falla con 408/409: añadir SetEnv proxy-nokeepalive 1 (ya incluido en ejemplo).
- Cliente GTK no se conecta: asegurarse de usar puerto 8071 y protocolo XMLRPC (Secure).
- Redirección HTTP a HTTPS no funciona: verificar que mod_rewrite está activo y reglas en el VirtualHost correcto.
Lista de verificación por roles
Administrador de sistema:
- Validar permisos de /etc/ssl/openerp.
- Automatizar renovación y despliegue de certificados.
- Monitorizar servicios (systemd/upstart) y logs de Apache/OpenERP.
Administrador de OpenERP:
- Confirmar que los addons que usan WebDAV no rompen con la proxy.
- Actualizar tools.proxy.base si cambia el dominio público.
Usuario final:
- Conectar usando la URL HTTPS proporcionada.
- En GTK, seleccionar XMLRPC (Secure) y puerto 8071.
Matriz de decisión simple
- ¿Necesita acceso público desde Internet? → Sí: use certificado público (Let’s Encrypt). No: considere VPN o CA interna.
- ¿Alto volumen de tráfico estático? → Considere Nginx.
Criterios de aceptación
- El servicio web solo responde por HTTPS en el dominio público.
- El cliente GTK y WebDAV funcionan correctamente sobre canales seguros.
- Ningún servicio no cifrado queda expuesto públicamente.
Notas de seguridad y privacidad
- Evite transmitir credenciales en texto claro. XMLRPC/NetRPC deben ir por canales cifrados.
- Para entornos con datos personales, documente el uso y conservación de claves según políticas internas y GDPR si aplica.
Resumen
- Configure Apache como terminador SSL y proxy inverso.
- Genere claves y certificados, asegúrelos con permisos apropiados.
- Limite OpenERP y cliente web a localhost.
- Reinicie servicios y valide conexiones HTTPS y clientes seguros.
Gracias por leer. Si necesita, proporcione la versión de OpenERP y Apache y puedo ayudar con una plantilla de configuración adaptada.
1-line glossary
- Terminador SSL: servicio que descifra conexiones HTTPS y reenvía tráfico al backend en HTTP.
Materiales similares

Instalar y automatizar OpenERP en Ubuntu

Ver el recuento de 'No me gusta' en YouTube

Proteger datos ante huracanes y desastres

Protégete del ataque BYOVD que usa rwdrv.sys
SSL para OpenERP en Ubuntu — Guía completa
