Diferència entre revisions de la pàgina «Implementar HTTPS y HSTS»
Línia 15: | Línia 15: | ||
*'''$request_uri''' ---> La variable '''$request_uri''' es el [https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/uri-identificador-de-recursos-uniformes/ '''URI'''] de solicitud original completo, incluyendo los argumentos. En este caso, '''/'''. | *'''$request_uri''' ---> La variable '''$request_uri''' es el [https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/uri-identificador-de-recursos-uniformes/ '''URI'''] de solicitud original completo, incluyendo los argumentos. En este caso, '''/'''. | ||
+ | |||
+ | <syntaxhighlight lang="nginx"> | ||
+ | # www.higieneposturalcloudgrupo2.tk | ||
+ | upstream www.higieneposturalcloudgrupo2.tk { | ||
+ | ## Can be connected with "web" network | ||
+ | server 172.18.0.5:80; | ||
+ | } | ||
+ | server { | ||
+ | modsecurity on; | ||
+ | modsecurity_rules_file /etc/nginx/modsec/main.conf; | ||
+ | server_name www.higieneposturalcloudgrupo2.tk; | ||
+ | listen 80 ; | ||
+ | access_log /var/log/nginx/access.log vhost; | ||
+ | # Do not HTTPS redirect Let'sEncrypt ACME challenge | ||
+ | location ^~ /.well-known/acme-challenge/ { | ||
+ | auth_basic off; | ||
+ | auth_request off; | ||
+ | allow all; | ||
+ | root /usr/share/nginx/html; | ||
+ | try_files $uri =404; | ||
+ | break; | ||
+ | } | ||
+ | location / { | ||
+ | return 301 https://$host$request_uri; | ||
+ | } | ||
+ | } | ||
+ | server { | ||
+ | modsecurity on; | ||
+ | modsecurity_rules_file /etc/nginx/modsec/main.conf; | ||
+ | server_name www.higieneposturalcloudgrupo2.tk; | ||
+ | listen 443 ssl http2 ; | ||
+ | access_log /var/log/nginx/access.log vhost; | ||
+ | ssl_session_timeout 5m; | ||
+ | ssl_session_cache shared:SSL:50m; | ||
+ | ssl_session_tickets off; | ||
+ | ssl_certificate /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.crt; | ||
+ | ssl_certificate_key /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.key; | ||
+ | ssl_dhparam /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.dhparam.pem; | ||
+ | ssl_stapling on; | ||
+ | ssl_stapling_verify on; | ||
+ | ssl_trusted_certificate /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.chain.pem; | ||
+ | add_header Strict-Transport-Security "max-age=31536000" always; | ||
+ | include /etc/nginx/vhost.d/default; | ||
+ | location / { | ||
+ | proxy_pass http://www.higieneposturalcloudgrupo2.tk; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
Revisió del 10:43, 3 abr 2022
Con respecto a la implementación HTTPS y HSTS, ha sido aplicada automáticamente a través del docker-compose que nosotros ejecutamos en unos de los puntos anteriores a este. Concretamente, en el punto 9. Accesibilidad a servicios externos, donde explicamos como obtener todo lo necesario para implementar todos los servicios que nos solicitan.
Comentado esto, explicaremos brevemente la configuración que añade nuestro docker-compose a nuestros diferentes virtualhost para que se logre dicha implementación (HTTPS y HSTS):
HSTS
En primer lugar, para la implementación de la política de seguridad HSTS en nuestro servidor web Nginx, deberemos aplicar las siguientes líneas de configuración que mostramos a continuación en cada uno de nuestros virtualhosts existentes:
- location / ---> Este recurso se utiliza para indicarle al servidor web Nginx a donde tiene que dirigirse las solicitudes que se soliciten. En este caso, le indicamos /, lo que coincidirá con todas las solicitudes demandadas y nos dirigirá a nuestra página web (este recurso se utiliza como última opción). También, podremos poner nuestra URI exacta.
- return 301 https:// ---> Se encarga de redireccionar el tráfico a la versión HTTPS de la página web visitada.
- $host ---> Esta variable es igual a la línea host que se escribe en el encabezado de la solicitud del navegador web o el nombre del servidor que procesa la solicitud si el encabezado host no está disponible.
- $request_uri ---> La variable $request_uri es el URI de solicitud original completo, incluyendo los argumentos. En este caso, /.
# www.higieneposturalcloudgrupo2.tk
upstream www.higieneposturalcloudgrupo2.tk {
## Can be connected with "web" network
server 172.18.0.5:80;
}
server {
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;
server_name www.higieneposturalcloudgrupo2.tk;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
# Do not HTTPS redirect Let'sEncrypt ACME challenge
location ^~ /.well-known/acme-challenge/ {
auth_basic off;
auth_request off;
allow all;
root /usr/share/nginx/html;
try_files $uri =404;
break;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;
server_name www.higieneposturalcloudgrupo2.tk;
listen 443 ssl http2 ;
access_log /var/log/nginx/access.log vhost;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_certificate /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.crt;
ssl_certificate_key /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.key;
ssl_dhparam /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.chain.pem;
add_header Strict-Transport-Security "max-age=31536000" always;
include /etc/nginx/vhost.d/default;
location / {
proxy_pass http://www.higieneposturalcloudgrupo2.tk;
}
Como siempre, recordad que por cada cambio se que se realice, deberemos guardarlo con la combinación de teclas Control + O y salir con la combinación de teclas Control + X.
HTTPS
Webgrafía