Diferència entre revisions de la pàgina «Implementar HTTPS y HSTS»
Línia 93: | Línia 93: | ||
*(Opcional) '''ssl_trusted_certificate /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.chain.pem;''' ---> En esta línea de configuración, especificaremos la ruta de la cadena de nuestro certificado y llave privada, es decir, la combinación de los dos juntos. | *(Opcional) '''ssl_trusted_certificate /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.chain.pem;''' ---> En esta línea de configuración, especificaremos la ruta de la cadena de nuestro certificado y llave privada, es decir, la combinación de los dos juntos. | ||
− | *'''location / { | + | *'''location / {''' |
− | proxy_pass http://www.higieneposturalcloudgrupo2.tk; | + | |
− | }''' ---> | + | '''proxy_pass http://www.higieneposturalcloudgrupo2.tk;''' |
+ | |||
+ | '''}''' ---> | ||
Revisió del 11:29, 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, /.
- add_header Strict-Transport-Security "max-age=31536000" always; ---> Esta línea de configuración, se encargará de informar a cada unos de los navegadores web que solamente se puede acceder a nuestro sitio web mediante el protocolo HTTPS.
# 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
Por último, una vez hayamos visto como se implementa la política de seguridad HSTS en los diferentes virtualhost de nuestro servidor web Nginx, veremos como podemos activar HTTPS en nuestro sitio web para que sea más seguro y la información viaje encriptada. En nuestro caso, ya hemos podido ver un poquito por encima como se realiza dicha implementación por lo mostrado en el punto anterior, pero esto no es lo suficientemente claro, y por dicha razón, explicaremos la configuración necesaria para que esto funcione perfectamente. Dicho esto, veamos como se hace:
En primer lugar, deberemos dirigirnos nuevamente a nuestro archivo de configuración virtualhost y, añadir las líneas siguientes para que funcione correctamente (las líneas marcadas son las fundamentales para que dicha implementación funcione, las otras no son necesarias):
- server_name ---> En esta línea de configuración, se encargará de indicarle al servidor DNS dónde debe ir el dominio indicado por el cliente.
- listen 443 ssl http2 ---> En esta línea de configuración, indicaremos que dicho dominio debe ir por el puerto 443 y por el protocolo HTTP2.
- ssl_certificate /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.crt; ---> En esta línea de configuración, deberemos indicar la ruta de nuestro certificado de dominio.
- ssl_certificate_key /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.key; ---> En esta línea de configuración, deberemos especificar la ruta de la llave privada del certificado que indicamos anteriormente.
- (Opcional) ssl_trusted_certificate /etc/nginx/certs/www.higieneposturalcloudgrupo2.tk.chain.pem; ---> En esta línea de configuración, especificaremos la ruta de la cadena de nuestro certificado y llave privada, es decir, la combinación de los dos juntos.
- location / {
proxy_pass http://www.higieneposturalcloudgrupo2.tk;
} --->
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;
}
Webgrafía