Guía de tecnologías

Paso 11. SSL

6 min read Seguridad Actualizado 02 Oct 2025
SSL para OpenERP en Ubuntu — Guía completa
SSL para OpenERP en Ubuntu — Guía completa

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:

  1. Generar/instalar certificados.
  2. Configurar Apache para SSL y proxy.
  3. Restringir interfaces en OpenERP a localhost.
  4. 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.
Autor
Edición

Materiales similares

Podman en Debian 11: instalación y uso
DevOps

Podman en Debian 11: instalación y uso

Apt-pinning en Debian: guía práctica
Sistemas

Apt-pinning en Debian: guía práctica

OptiScaler: inyectar FSR 4 en casi cualquier juego
Guía técnica

OptiScaler: inyectar FSR 4 en casi cualquier juego

Dansguardian + Squid NTLM en Debian Etch
Redes

Dansguardian + Squid NTLM en Debian Etch

Arreglar error de instalación Android en SD
Android

Arreglar error de instalación Android en SD

Conectar carpetas de red con KNetAttach
Redes

Conectar carpetas de red con KNetAttach