Mostrando entradas con la etiqueta nginx ssl. Mostrar todas las entradas
Mostrando entradas con la etiqueta nginx ssl. Mostrar todas las entradas

sábado, 14 de mayo de 2016

Como Instalar Odoo9-Con-Multiples-BasesDdatos-Dominios-SSL-MarcaBlanca


Como instalar Odoo 9 con:

* Múltiples bases de datos

* Múltiples sitios WEB en los puertos 80 y 443

* Múltiples dominios

* Multiples certificados SSL

* Addons para remover la marca Odoo de las bases de datos, Marca en Blanco (White Label, Debranding).

Bienvenidos, en este tutorial estaremos aprendiendo a instalar Odoo 9 y lograr que funcionen todos los ítems mencionados arriba.
El problema al instalar el módulo de Sitios web es que si creamos varias bases de datos con este módulo instalado, al ingresar el sistema no sabe cuál sitio web cargar.
Y si pensamos entrar a un sitio web con información tan importante como la que se genera con Odoo siempre es necesario asegurar el ingreso con HTTPS.

Para lograr todo esto es necesario:
* Instalar y configurar Postgres 9.4 localmente

* Configurar Nginx como reverse proxy

* Configurar Nginx con varios Host virtuales

* Configurar Odoo para escuchar sólo conexiones locales y así permitir a Nginx hacer todo el trabajo.

* Configurar Odoo para escoger las bases de datos en base al nombre de dominio.
Ej. Si el dominio es www.ejemplo.com entonces la base de datos debe llamarse ejemplo.com o www.ejemplo.com

* Agregar los Addons desarrollados por Yelizariev (Github) que permiten eliminar la marca Odoo de las bases de datos.

Como en todos los tutoriales de este Blog, vamos a utilizar un script que automatice la mayor parte del trabajo de configuración de Odoo 9, Nginx, Odoo Addons, Dependencias, etc.

Requisitos:
1.- Tener instalado Ubuntu server 14.04 LTS
(Ya me ha funcionado con otras versiones de Ubuntu como 15.10 o 16.04, pero el script principal está especialmente seteado para funcionar con Ubuntu server 14.04 LTS.)

Ver este post para mayor info sobre como instalar ubuntu server:
http://jp-kb.blogspot.com/2016/05/como-instalar-linux-ubuntu-1404-lts-en.html

2.- Obtener los certificados SSL para los sitios web
Ver este post para mayor info sobre como obterner certificados SSL de forma gratuita:
http://jp-kb.blogspot.com/2016/05/como-conseguir-certificados-ssl.html

Paso 1.- Descargar script y copiar Certificados

Iniciamos sesión en Ubuntu 14.04.
Ejecutamos el comando (Solo copiar el texto que se encuentra entre las líneas):
       
sudo wget https://raw.githubusercontent.com/jpvs1978/Instalar_odoo/Instalar-Odoo9-Nginx-SSL/Instalar-Odoo9-Nginx-SSL.sh
       

Este comando nos descarga una copia del archivo "Instalar-Odoo9-Nginx-SSL.sh" y lo guarda en el directorio donde se ejecutó el comando.
Podemos verificar la presencia del archivo ejecutando el comando "ls"

Antes de continuar siga los siguientes pasos para que se habiliten sus certificados.

Copie sus certificados en el directorio HOME del usuario con el que ejecuta el script.
Estos certificados serán utilizados para cargar el sitio web predeterminado
Parte pública provista por la entidad de certificación, cambiar el nombre a server.crt
Parte privada generada al crear la solicitud, cambiar el nombre a server.key
Si no tiene un certificado provisto por una entidad de certificación pública puede generar uno autofirmado con los comandos de abajo.
1.1.- solicita una clave, escriba cualquiera



openssl genrsa -des3 -out server.pkey 2048

1.2.- Con este comando eliminamos dicha clave, de otra forma tendríamos que escribir esa clave cada vez que se reinicie nginx



openssl rsa -in server.pkey -out server.key

1.3.- Con este comando creamos un archivo que contiene la solicitud del certificado y debemos proveer la info



openssl req -new -key server.key -out server.csr

1.4.- Finalmente  se firma el certificado y guardamos los archivos server.key y server.crt

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Paso 2.- Modificar variables del script

Utilizar el programa "nano" para editar el archivo descargado "Instalar-Odoo9-Nginx-SSL.sh"

sudo nano Instalar-Odoo9-Nginx-SSL.sh      

El comando de arriba nos va presentar el contenido del archivo descargado.

Para modificar el texto se trabaja de forma muy similar a Notepad de Windows.
Para salir del software "Nano" se debe presionar las teclas Ctrl + x, luego escribir "y" o "s" para aceptar los cambios y luego "Intro" para confirmar el nombre de archivo a guardar.

Entre las opciones que podemos cambiar están:
OE_USER="odoo"
Aquí podemos cambiar el texto odoo por cualquier nombre de usuario que queramos utilizar, se debe tomar muy en cuenta que el script utiliza este nombre de usuario para generar mucha información. Como por Ej. la ubicación de los archivos de instalación, la ubicacion de los addons, los Logs, el servicio de Odoo se va ejecutar en base a este nombre de usuario.
Si el usuario se llama ERP, entonces el servicio tendrá el nombre de "erp-server", por defecto el nombre del servicio sería "odoo-server"

INSTALL_WKHTMLTOPDF="True" 
Esta variable define si se va instalar o nó el software que nos permite exportar todos los informes en formato PDF.

OE_SUPERADMIN="admin" 
Esta variable define la contraseña que se va utilizar para realizar cambios a las bases de datos también se conoce como "Master Password" y permite copiar bases de datos, hacer Backup, eliminar, etc. Es muy importante recordar las opciones que escogemos y tomar debida nota.
No se recomienda modificar otras variables a menos que el usuario sepa muy bien lo que está haciendo.

Paso 3.- Permisos de ejecución y ejecución del script

Es necesario configurar los permisos del archivo Instalar-Odoo9-Nginx-SSL.sh para que sea ejecutable.

sudo chmod +x Instalar-Odoo9-Nginx-SSL.sh

Ejecutar el archivo ejecutable de la siguiente forma.

./Instalar-Odoo9-Nginx-SSL.sh       

El proceso de instalación es relativamente largo y realiza muchas conexiones y descargas desde internet, si usted cierra la sesión por algún motivo, el script se detendrá forzosamente.
Para poder ejecutar este script sin miedo a que se detenga le recomendamos leer la información adicional al final del documento.

Al finalizar el proceso se tendrá una copia funcional del software Odoo, a la cual podrá ingresar de las siguiente forma:
1.- Escribiendo el nombre de dominio Ej. www.midominio.com.bo
Esto cargará el sitio web por defecto con https (modo seguro) habilitado y le pedirá que cree la primer base de datos.
2.- Escribiendo la IP de la PC donde está ejecutando el script de instalación.
Ej. 192.168.0.1
Esto va generar un error de certificado y deberá ignorarlo para poder ingresar al sitio web predeterminado.
Este script está pensado para configurar el acceso a Odoo de forma segura con https:


Paso 4.- Acceder al administrador de bases de datos. (Crear, copiar, eliminar, etc.)

Hasta el momento hemos logrado:
Instalar Postgres 9.4 (mediante script)
Instalar Odoo 9 (mediante script)
Instalar Nginx (mediante script)
Crear la primer base de datos con el nombre igual a un dominio.
Acceder al sitio web predeterminado utilizando HTTPS

4.1 Ahora nos toca crear una nueva base de datos, para eso debemos entrar al sitio web predeterminado con la ruta adicional que nos lleva al administrador de las bases de datos.
Ej. https://www.midominio.com/web/database/manager  en la imagen de abajo se vé el dominio de una implementación de Odoo creada con el método descrito en este Tutorial.



Aquí podremos ver la primer base de datos creada, el nombre de la misma debería ser "www.midominio.com"
Como se puede ver en la imagen de arriba, tenemos varias opciones :
4.2 Backup (copia de seguridad).- Nos permite guardar el una copia de toda la base de datos y puede ser restaurada en el mismo sistema o también en otra instalación de Odoo que cumpla con todos los requisitos de Versión de Postgres, Versión de Odoo, Addons instalados y las versiones de los Addons.
4.3 Duplicate Copiar una base de datos, esto nos permite crear bases e datos idénticas, de esta forma podemos utilizar una como plantilla.
También podemos utilizar esta función para probar nuevos addons y cambios en la BD antes de ponerlos en produccion.
Etc.
4.4 Delete Eliminar la base de datos, sin posibilidad de recuperación si no hay Copia.
En los botones azules tenemos otras opciones:
4.5 Create Database  Esta opción nos permite crear una nueva base de datos sin ningún módulo instalado, debemos recordar que el nombre es muy importante puesto que el sistema nos va mostrar la base de datos que tenga el nombre del dominio.
Si deseamos cambiar este comportamiento debemos editar el archivo de configuración de Odoo, para ver como hacerlo ir al final del tutorial en la Información adicional / Cambiar el comportamiento del sistema Odoo para filtrar múltiples bases de datos.
4.5 Restore database  Esta opción nos permite restaurar el backup que realizamos más arriba
4.6 Set Master Password   Esta opción nos permite cambiar la contraseña que utilizamos para realizar modificaciones en el administrador de base de datos.

Paso 5.- Configurar Nginx con SSL para múltiples dominios.
5.1 Descargar el script

sudo wget https://raw.githubusercontent.com/jpvs1978/Instalar_odoo/Instalar-Odoo9-Nginx-SSL/AgregarVirtualHost.sh

5.2 Modificar y ejecutar el script

Modificar las variables del script y leer las indicaciones que se encuentran dentro del archivo.

sudo nano AgregarVirtualHost.sh

5.3 cambiar el permiso de ejecución y ejecutar el script

sudo chmod +x AgregarVirtualHost.sh
./AgregarVirtualHost.sh

Paso 6.- Acceder al nuevo dominio. 


Información adicional.-

* Comandos útiles



sudo nano /etc/odoo-server.conf
sudo service odoo-server restart -c /etc/odoo-server.conf
sudo service odoo-server stop
sudo service odoo-server start
sudo reboot
screen       

Tomar en cuenta que "odoo" es el usuario por defecto seleccionado en las variables del Script de instalación, si usted cambió dicho usuario debe modificar los comandos mencionados arriba acorde a su elección.
- El primer comando nos permite leer y modificar el archivo de configuración que controla el funcionamiento de la mayor parte de las funciones de odoo.
- El segundo comando nos permite reiniciar el servicio y actualizar cualquier modificación que se haya realizado al archivo de configuración.
- El tercer comando detiene el servicio
- El cuarto comando inicia el servicio
- El quinto comando reinicia el sistema operativo.
- El sexto comando nos permite ejecutar procesos en una pantalla diferente que se ejecuta en segundo plano y podemos desconectarnos de ella sin detener los procesos que se ejecutan.
Para manipular las pantallas despues del comando "screen" se utiliza la combinación de teclas "Ctrl+a"
luego de ctrl+a se puede escribir los caracteres de abajo para modificar el comportamiento.
? Muestra la ayuda y todas las opciones, ver abajo las más útiles.
c Crean una nueva consola virtual
n Cambia a la siguiente consola virtual disponible
p Cambia a la consola virtual anterior
" Lista todas las consolas virtuales disponibles con sus número asignados
1-9 permite traer la consola que corresponde a este número.
d se desconecta de la terminal actual y le muestra la línea de comandos normal de ubuntu
screen -r Permite volver a conectarse a las consolas virtuales de screen

* Cambiar el comportamiento del sistema Odoo para filtrar múltiples bases de datos.

Si deseamos cambiar el comportamiento configurado por nuestro script de forma predeterminada debemos editar el archivo de configuración de Odoo.
El script que utilizamos para instalar Odoo 9 ubica dicho archivo en /etc/odoo-server.conf
modificamos el archivo con el comando:

sudo nano /etc/odoo-server.conf   


En este archivo debemos buscar el valor dbfilter = ^%h$ y cambiarlo por dbfilter = .*
luego reiniciamos Odoo 9 y aplicamos los cambios con el comando:

sudo service restart odoo-server -c /etc/odoo-server.conf

Gracias a esta modificación el sistema nos va mostrar todas las bases de datos disponibles, el problema con esto es que si dos bases de datos tienen el módulo de sitio web instalado veremos muchos errores de cookies, errores de inicio de sesión y muchos problemas debido a que los navegadores no saben cómo lidiar con varios sitios web almacenados con la misma url.
Una vez terminemos de modificar las bases de datos podemos volver a la configuración con el filtro ^%h$


Este tutorial está basado en el trabajo de Aschenkels, Yenthe666, Yelizariev, Bassn en github
Si este Artículo ha sido útil por favor visite las páginas de nuestros auspiciadores.












miércoles, 11 de mayo de 2016

Como conseguir certificados SSL


En este tutorial estaremos aprendiendo a conseguir certificados SSL firmados por una entidad de Certificación pública y de forma gratuita.

Existen dos tipos de certificados.

1.- Los certificados autofirmados, estos certificados son igual de seguros pero el certificado de la entidad de certificación privada se debe instalar en cada uno de los dispositivos que harán uso de las conexiones seguras.
Si pensamos ofrecer servicios web a nuestros clientes, estos certificados no son de utilidad porque no podemos pedirle al cliente que instale nuestra copia del certificado en todos sus equipos.
Es por esto que existen los certificados emitidos por entidades de certificación públicas.

2.- Certificados emitidos por entidades de certificación públicas.
Es conveniente encontrar una entidad de certificación que venga configurada por defecto en la mayor cantidad de dispositivos, navegadores, sistemas operativos, etc.
De esta forma  podremos proveer servicios a nuestros clientes y ellos no verán esos molestos errores de certificados inválidos.

Ej. StartCom es una de las 6 empresas más grandes y más aceptadas a nivel mundial y lo mejor es que tiene una opción gratis.
Abajo se puede ver una imagen con una muestra de los dispositivos y sistemas compatibles con con esta entidad.





También existen varios niveles de validación al momento de conseguir nuestros certificados, estos diferentes niveles de validación nos permiten incrementar el nivel de confiabilidad que nuestros clientes sienten al ingresar a nuestros sitios WEBs.
Cómo obtener niveles de Validación Extendidos va más allá del alcance de este tutorial.

El método que vamos a describir en este tutorial nos servirá para conseguir certificados válidos para:
Asegurar nuestro webmail con un certificado provisto por una entidad de certificación pública.
Asegurar las comunicaciones de Exchange server 2010 y 2013
Asegurar el inicio de sesión a nuestro sitio web o intranet.
Asegurar el acceso a nuestra casilla de email privada con los protocolos seguros POP3S, SMTPS, IMAPS
Apache server
IIS Server
Nginx Server
Otros Servidores y servicios.

Paso 1.- Ingresar al sitio web de la entidad de certificación https://www.startssl.com/
Paso 2.- Buscar la opción StartSSL Free y seleccionar el botón verde "Start Now"
A continuación deberemos seguir los pasos para autenticarnos, al finalizar podremos comenzar a emitir los certificados.
Paso 3.- El paso 2 nos lleva al siguiente sitio web. https://www.startssl.com/Account?r=%2FValidate
3.1.- En este sitio web nos ofrecen dos opciones, debemos escoger la que dice "Sing UP"
3.2.- Luego ingresamos nuestra casilla de email y damos un click al botón verde "Send verification code" y esperamos la llegada de un email de parte de "validation@startssl.com"
3.3 Dentro del contenido del email debemos buscar la siguiente línea: "Your verification code is"
Justo debajo de esta línea encontraremos una cadena de caracteres alfanuméricos que debemos copiar y pegar en el sitio web donde dice "Verification code".
3.4.- Luego el sistema de StartCom intentará instalar el certificado de forma automática y es posible que falle.
3.5 En caso que falle les pedirá que cree una contraseña, la contraseña se debe escribirse dos veces y dar un click en el botón verde "submit"
3.6 Y finalmente un click en el botón Azul que nos permite descargar el certificado que nos autentifica como propietarios de nuestra casilla de email.
Paso 4.- Instalar el certificado en nuestro sistema operativo.
Esto se consigue dando doble click al archivo descargado.
En el diálogo podemos aceptar con confianza todas las opciones por defecto hasta finalizar y no olvidarse de escribir la contraseña que creamos en el paso 3.4
Es posible que sea necesario reiniciar los navegadores.
Paso 5.- Volvemos al sitio web mencionado en el paso 3 https://www.startssl.com/Account?r=%2FValidate
Paso 6.- Ahora damos un click en el ícono de la llave verde y procedemos a seleccionar el certificado recientemente instalado, debería tener como nombre nuestro email.
Depende del navegador que usted esté utilizando, la forma en que este certificado es utilizado.
Ej 1.- Google Chrome le pide automáticamente que seleccione uno de los certificados instalados en windows.
Ej 2.- Para Mozilla firefox es necesario importar el certificado manualmente.
Para importar el certificado se debe ir a "Opciones" / "Avanzadas" / "Ver certificados" aquí podemos importar el archivo que recientemente descargamos de StartCom.

Paso opcional.- En caso que tengan problemas para autenticarse utilizando un Certificado Personal, también se puede iniciar sesión es este sitio web utilizando una contraseña de un solo uso (OTP - One Time Password).
Para hacer esto solo es necesario ingresar a este link y escribir nuestro email.
https://www.startssl.com/otplogin

Paso 7.- Emitir nuestro certificado.
Una vez estemos autenticados y podamos ingresar al sitio web el siguiente paso es Validar que somos propietarios del dominio en cuestión. Ej. micompañia.com
Para esto ingresamos a la pestaña "Validations Wizard", aquí ingresamos el nombre de nuestro dominio. Ej. micompañia.com
7.1.- El sistema necesita enviarnos un nuevo código de validación a la dirección de email asociada a la administración de dicho dominio  y para eso busca en las bases de datos Whois las direcciones de email listadas.
En caso que no tengamos a mano ninguna de las opciones ofrecidas será necesario crear una de esas direcciones de email en nuestro servidor de emails o solicitar a nuestro proveedor que lo haga por nosotros y luego dar un click en el botón azul que dice "Send verification code"
Debemos ingresar a la casilla de email recientemente creada y estar atentos a la llegada de un email.
Tomar en cuenta que solo tendremos 60 segundos para copiar y pegar en la página web el código, si no es posible hacerlo a la primera, siempre podremos enviar un nuevo código.
7.2.- Éxito, ahora podemos buscar la pestaña "Certificate Wizard"
7.3.- En la pestaña "Certificate Wizard" escogemos la opción "Web Server SSL/TLS Certificate" y luego el botón azul "Continue"
7.4.- Entramos el nombre de dominio y las direcciones para las cuales vamos a emitir un certificado, también debemos generar una solicitud de firma de certificado. Es un archivo con extensión *.csr
Para esto podemos utilizar la herramienta "StartCommTool.exe" que nos es provista.
Ver link: https://download.startpki.com/startcom/startcomtool.exe
Finalmente damos click en el botón azul "submit"
7.5.- Cómo utilizar la herramienta StartComTool.exe, solo seleccionar las opciones mostradas abajo en el orden descrito.
Finalmente copiamos todos el contenido CSR presionando en el botón "Copy" y debemos pegarlo en la pestaña "Certificate Wizard" tal como se muestra en el inciso 7.4
Lo más importante es guardar los dos archivos generados por este software, como se vé en la flecha número 7
De estos dos archivos el que tiene extensión .key es el más importante y nunca debemos compartirlo con nadie. Esta es la clave privada.
Se debe tomar especial atención en distinguir las dos partes que tiene un certificado SSL. (La clave privada y la clave pública)..
7.6.- Éxito, una vez presionado el botón azul del inciso 7.4 el sistema debería generar un archivo comprimido .zip
Este archivo contiene los certificados generados para nosotros, si bien ha sido generado solo 1 certificado podremos ver que hay varios archivos. Esto se debe a que el sistema nos genera automáticamente varios formatos del mismo certificado.
Esto se debe a que los diferentes dispositivos que hacen uso de este certificado, tienen diferentes exigencias en cuanto a formato.