Tux y OpenERP

Tux y OpenERP
Para obtener información sobre como implantar OpenERP en tu empresa --- contactar con informaticartica@gmail.com ---

martes, 7 de febrero de 2012

SSL en Servidor con OpenERP


INSTALACIÓN SSL EN OPENERP

1. Instalando Apache y los módulos requeridos

Instalar apache mediante el siguiente comando:
sudo apt-get install apache2
Ahora le diremos a apache que queremos usar unos módulos (mod_ssl, mod_proxy, mod_proxy_http, mod_headers and mod_rewrite [optional]) que no están activos por defecto:
sudo a2enmod ssl proxy_http headers rewrite
Lo siguiente que necesitamos es generar las claves y el certificado de SSL.

2. Creando el certificado y las claves

Vamos a crear los archivos en un directorio temporal para después moverlos a su lugar definitivo una vez se hayan generado correctamente (El primer “cd” es para asegurarnos que estamos dentro de nuestro home, dicho comando te devuelve siempre a la ruta de tu home):
cd
mkdir temp
cd temp
Tras esto generamos una nueva clave, nos pide una contraseña y la confirmación de dicha contraseña:
openssl genrsa -des3 -out server.pkey 1024
Realmente no nos interesa tener que introducir la contraseña cada vez que iniciamos el servidor por lo cual eliminamos la contraseña de la siguiente manera:
openssl rsa -in server.pkey -out server.key
Lo siguiente es crear una solicitud de firma que contendrá los datos que serán visibles en el certificado final:
openssl req -new -key server.key -out server.csr
Esto genera una serie de prompts como estos:
Introducir la información requerida:
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:The Client’s Company
Y finalmente nosotros firmamos nuestro propio certificado.
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Solamente tenemos 2 de los archivos en el directorio de trabajo, la clave y el certificado. Pero antes de poder trabajar con ellos tenemos que cambiar el propietario y los permisos en ambos archivos:
sudo chown openerp:root server.crt server.key
sudo chmod 640 server.crt server.key
Y (muy importante) ponerlos en lugar seguro:
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/
Ahora la clave y el certificado se encuentran guardados en lugar seguro, debemos decirle a Apache donde se encuentran:

3. Creando el archivo de configuración de Apache

Vamos a crear un nuevo archivo de configuración del “Virtual Host”
sudo nano /etc/apache2/sites-available/openerp-ssl
con el siguiente contenido:
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/openerp/server.crt
SSLCertificateKeyFile /etc/ssl/openerp/server.key
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyVia On
ProxyPass /webdav/ http://127.0.0.1:8069/webdav/
<Location /webdav/ >
ProxyPassReverse /webdav/
<Limit OPTIONS PROPFIND GET REPORT MKACTIVITY PROPPATCH PUT MOVE COPY DELETE LOCK UNLOCK>
Order Deny,Allow
Allow from all
Satisfy Any
</Limit>
</Location>
ProxyPass / http://127.0.0.1:8080/
<location / >
ProxyPassReverse /
</location>
RequestHeader set "X-Forwarded-Proto" "https"
# Fix IE problem (httpapache proxy dav error 408/409)
SetEnv proxy-nokeepalive 1
</VirtualHost>
Fijémonos que hay 2 configuraciones proxy. Una para /webdav/ and otra para /. Si no teneis intención de usar WebDAV o CalDAV os podeis saltar esta sección. Pero esencialmente, nosotros le decimos a Apache que el tráfico de WebDAV necesita usar el puerto XMLRPC en el servidor de OpenERP y el tráfico normal web debe usar el puerto 8080 que es que usa el cliente Web. El orden es sumamente importante. Si / viene antes que /webdav/ podría no funcionar.
Tras esto podemos activar la nueva configuración de sitio.
sudo a2ensite openerp-ssl
Opcionalmente, podemos usar mod_rewrite para redireccionar cualquier tráfico normal (no encriptado) del navegador al puerto SSL (443).
Para conseguir hacer esto, añade las siguientes líneas (fuera de <directory> ) al archivo /etc/apache2/sites-available/default
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]

4. Cambios en los archivos de configuración del servidor de OpenERP y el OpenERP Web

El siguiente paso es reconfigurar OpenERP Server y OpenERP Web para que los servicios no cifrados no sean accesibles desde el exterior.
En /etc/openerp-server.conf los 2 servicios no encriptados estarán a la escucha solo en localhost, es decir no se acepatarán conexiones externas , serán aceptadas vía Apache. Por lo tanto debemos indicar el servicio de XMLRPC-SSL para que sepa donde encontrar el certicado y la clave necesarios.
Realicemos los siguientes cambios:
sudo nano /etc/openerp-server.conf
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 queremos disponer de acceso WebDAV/CalDAV añadir lo siguiente al final del archivo de configuración:
[webdav]
enable = True
vdir = webdav
Tras esto, realizaremos una serie de cambios en el archivo de configuración del cliente web en /etc/openerp-web.conf para que acepte tráfico solamente desde localhost:
sudo nano /etc/openerp-web.conf
# 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
Esto es todo.

5. Probemos...

Reiniciar los servicios para cargar las nuevas configuraciones
sudo service openerp-server restart
sudo service openerp-web restart
sudo service apache2 restart
No debería ser capaz de conectar con el cliente Web en el puerto 8080 y el cliente GTK no debería conectar ya sea mediante el NetRPC (8070) o bien el XMLRPC (8069) . Para el acceso web sólo tenemos que entrar con https://tu-ip-o-dominio y en el cliente GTK tendremos que usar el puerto 8071 y elegir el protocolo XMLRPC (protocolo seguro).


Para el acceso por URL al CalDAV debemos escribir algo como esto en nuestros navegadores:
https://tu-ip-o-dominio/webdav/DB_NAME/calendars/users/USERNAME/c/CALENDAR_NAME
Y hasta aquí puedo leer....
No quisiera terminar este artículo del blog sin agradecer sus aportes a Alan, os dejo el enlace original y aceptaré cualquier corrección en cuanto a la traducción del texto.
http://www.theopensourcerer.com/2011/04/21/how-to-install-openerp-6-on-ubuntu-10-04-lts-server-part-2-ssl/
Juani

2 comentarios:

  1. Una nota al firmar el certificado en el ejemplo le pone una validez de 365 días. Hay que acordarse que después de 1 año, el certificado dará error ¿no?, a no ser que lo renueves.

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar