Router
Na DNS vytvořit ha.local na server na kterém je nainstalován NGINX
Konfigurační soubor pro tvorbu certifikátu pomocí OpenSSL
Tvoříme soubory atlantus.key, atlantus.crt pomocí atlantus.cfg
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_req
prompt = no
[ req_distinguished_name ]
countryName= CZ
stateOrProvinceName= Czechia
localityName= XXXXX
organizationName= XXXXXX
organizationalUnitName= homeassistant
commonName= HomeAssistant
emailAddress= xxxx@xxx.xx
[ req_attributes ]
[ req_distinguished_name ]
CN = Atlantus
[ req_ext ]
subjectAltName = @alt_names
[ v3_req ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = ha.local
Příkazy pro tvorbu certifikátů
openssl genrsa -out atlantus.key 2048
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout atlantus.key -out atlantus.crt -config atlantus.cnf
Instalace certifikátu do Windows
Win+R certmgr.msc
Trusted root Certification Authorities
Konfigurační soubor
upravte configuration.yaml:
http:
use_x_forwarded_for: true
trusted_proxies:
- xxx.xxx.xxx.xxx # IP kde bezi NGINX server
nginx.conf
# Konfigurace pro home-assistant
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
server {
listen 443 ssl; # Naslouchání na HTTPS
server_name ha.local; # ha.local musí směrovat na adresu, kde se nachází NGINX server
# Cesty k SSL certifikátům (nahraďte vašimi cestami)
ssl_certificate /etc/nginx/ssl/atlantus.crt;
ssl_certificate_key /etc/nginx/ssl/atlantus.key;
location / {
proxy_pass http://<home assistant ip>:8123; # IP adresa a port existujícího web serveru
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
events {}
Instalace do dockeru
docker-compose.yml
version: "3.8"
services:
nginx:
container_name: nginx-proxy # Mozno zmenit
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- /cesta/logs:/var/log/nginx
- /cesta ke konfiguracnimu soboru/nginx.conf:/etc/nginx/nginx.conf:ro
- /cesta k certifikatum:/etc/nginx/ssl:ro
restart: unless-stopped
Problém HSTS
Pokud chcete vyčistit nebo odstranit záznam HSTS (HTTP Strict Transport Security) pro konkrétní doménu v prohlížeči Google Chrome, postupujte následovně:
- Otevřete Chrome a přejděte na stránku s interním nastavením HSTS:
- Do adresního řádku zadejte:
chrome://net-internals/#hsts
a stiskněte Enter.
- Do adresního řádku zadejte:
- Najděte sekci “Delete domain security policies”:
- V části “Delete domain security policies” zadejte název domény, kterou chcete vyčistit z HSTS (např.
priklad.cz
).
- V části “Delete domain security policies” zadejte název domény, kterou chcete vyčistit z HSTS (např.
- Odstraňte doménu z HSTS:
- Klikněte na Delete. Tím dojde k odstranění záznamu HSTS pro zadanou doménu.
- Vyzkoušejte přístup na doménu:
- Po odstranění můžete vyzkoušet opětovný přístup na doménu a ověřit, zda se načítá bez přesměrování na HTTPS, pokud není HSTS znovu vyžadováno serverem.
Tímto způsobem by mělo být HSTS pro konkrétní doménu v Chrome vymazáno.
Ostatní
Základní konfigurace pro port 80
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}