Créditos:
https://github.com/odoomates/odoosamples/blob/main/odoo_nginx_conf
https://www.youtube.com/watch?v=-hVYQd7A7PQ
1. Conseguir y adaptar los certificados al formato requerido por Nginx
Se opera igual que en el post anterior para conseguir cambiar el formato de los certificados, cuyo texto copio a continuacion:
En este caso disponemos de un certificado en formato pkcs#12 (extension ".p12"). Parece ser que Nginx prefiere tener el certificado en ficheros, uno con extensión ".crt" y otro, la clave , con extensión ".key".
Para convertir de format pkcs#12 al último formato ejecutamos:
#1. Extract certificate in crt format
openssl pkcs12 -in ./MyCert.p12 -clcerts -nokeys -out wildcard2023Nginx.crt
#2. Extract key in rsa format
openssl pkcs12 -in ./MyCert.p12 -nocerts -nodes -out wildcard2023Nginx.rsa
En este caso, el nombre se debe a que es un certificado wildcard que valida cualquier ordenador con el dominio "poblacion.es", como por ejemplo "odoo.poblacion.es" . En el proceso anterior nos pide la contraseña, por tanto ya tenemos este par de certificado y clave:
- wildcard2023Nginx.crt y
- wildcard2023Nginx.rsa
2. Crear una carpeta en el servidor remoto y copiar dentro los certificados
#odoo serverupstream odoo {server 127.0.0.1:8069;}#Se tiene que abrir el puerto en el firewall.!!!!!upstream odoochat {server 127.0.0.1:8072;}map $http_upgrade $connection_upgrade {default upgrade;'' close;}server {listen 80;server_name odoo.localidad.es 192.168.28.139;rewrite ^(.*) https://$host$1 permanent;}server {#listen 443 ssl;listen 8443 ssl;server_name odoo.localidad.es 192.168.28.139;# 2.1.2 certificados obtenidos en el punto 2ssl_certificate /etc/nginx/certs/wildcard2023Nginx.crt;ssl_certificate_key /etc/nginx/certs/wildcard2023Nginx.rsa;proxy_read_timeout 720s;proxy_connect_timeout 720s;proxy_send_timeout 720s;# Add Headers for odoo proxy modeproxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;add_header X-debug-message "1. Passing to odoo16 host=$host ,remote_addr=$remote_addr ,proxy_add_x_forwarded_for=$proxy_add_x_forwarded_for ,scheme=$scheme server_port=$server_port ,http_upgrade=$http_upgrade ,request_uri=$request_uri" always;# logaccess_log /var/log/nginx/odoo.access.log;error_log /var/log/nginx/odoo.error.log;location /websocket {proxy_pass http://odoochat;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;}location / {proxy_redirect off;proxy_pass http://odoo;}# common gzipgzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;gzip on;}
#odoo serverupstream odoo {server 127.0.0.1:8069;}upstream odoochat {server 127.0.0.1:8072;}server {#listen 80;listen 443 ssl;server_name 192.168.28.139;#odoo.localidad.es www.odoo.localidad.es;# 2.1.2 certificados obtenidos en el punto 2ssl_certificate /etc/nginx/certs/wildcard2023Nginx.crt;ssl_certificate_key /etc/nginx/certs/wildcard2023Nginx.rsa;proxy_read_timeout 720s;proxy_connect_timeout 720s;proxy_send_timeout 720s;# Add Headers for odoo proxy modeproxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;# logaccess_log /var/log/nginx/odoo.access.log;error_log /var/log/nginx/odoo.error.log;# Redirect requests to odoo backend serverlocation / {proxy_redirect off;proxy_pass http://odoo;}location /longpolling {proxy_pass http://odoochat;}# common gzipgzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;gzip on;client_body_in_file_only clean;client_body_buffer_size 32K;client_max_body_size 500M;sendfile on;send_timeout 600s;keepalive_timeout 300;}
add_header X-debug-message "2. Passing to odoo16 host=$host ,remote_addr=$remote_addr ,proxy_add_x_forwarded_for=$proxy_add_x_forwarded_for ,scheme=$scheme server_port=$server_port ,http_upgrade=$http_upgrade ,request_uri=$request_uri" always;
4. Rearrancar el servicio de nginx
sudo service nginx stop
sudo service nginx start
5. Dar un nombre de dominio
6. Problemas con el firewall
- Verificar que NO se utilizan los puertos 80 ni 443 en nginx!!
- Utilizar 8080 o 8443
- Tras la instalación del servidor https/https "twisted" y su ejecución, parece ser que inexplicablemente deja de haber problemas de rechazo de conexión!
6.1 Herramientas disponibles
6.1.1 Utilizando netcat
- Si esta abierto: Connection to 46.24.94.100 443 port [tcp/http] succeeded!
- Si esta cerrado: Se queda en espera eternamente y no contesta.
- Si rechaza la conexion: nc: connect to 46.24.94.60 port 7324 (tcp) failed: Connection refused
6.1.2 Utilizando nmap
- Si esta abierto: 19444/tcp open unknown
- Si esta cerrado: 19444/tcp filtered unknown
- Si rechaza la conexion: 19444/tcp closed swx.
6.1.3 Utilizando telnet
- Si esta abierto: Connected to 46.24.94.60. Escape character is '^]'.
- Si esta cerrado: Se queda en espera..
- Si rechaza la conexion: telnet: Unable to connect to remote host: Connection refused
6.1.4 Utilizar un escaneador de puertos por internet
6.2 Crear un servidor http/https de pruebas interno
# Definicion del comado sudo twistd web --https=<port> --path=. -c </path/to/cert.pem> -k </path/to/privatekey.pem>
# Ejemplo de uso sudo twistd web --https=8443 --path=. -c /etc/nginx/certs/wildcard2023Nginx.crt -k /etc/nginx/certs/wildcard2023Nginx.rsa
No hay comentarios :
Publicar un comentario