Ghost: certifikáty a domain redirect
Článok o nastavení certifikátov a presmerovaní domén.
Takže blog nám beží na adrese https://jozefjuris.sk/. Ale ak užívateľ zo zvyku zadá do adresného riadku www https://www.jozefjuris.sk/, tak ho prekvapí upozornenie na neplatný certifikát.
Žiadnu paniku, problém je len v tom, že skript, ktorý nám pri prvom príhlasení sa do virtuálnej mašiny vygeneroval SSL certifikát len pre doménu bez www.
Príkaz pre vygenerovanie nového certifikátu vyzerá takto:
/etc/letsencrypt/acme.sh \
--issue \
--home /etc/letsencrypt \
--server letsencrypt \
--domain jozefjuris.sk \
--domain '*.jozefjuris.sk' \
--domain juris.sk \
--domain '*.juris.sk' \
--domain jozefjuris.cz \
--domain '*.jozefjuris.cz' \
--reloadcmd "nginx -s reload" \
--dns dns_websupport \
--force
popis jednotlivých možností:
--issue
príkaz má za úlohu vydať nový certifikát--home
nastavíme domovský adresár k acme.sh,--server
vyberieme overovací server (na výber je aj https://zerossl.com/)--domain
zadáme zoznam domén, pre ktoré chceme vydať certifikát--reloadcmd
príkaz, ktorý sa spustí na záver, reload nginx--dns
typ overenia identity--force
vynútená obnova
Poznámka, pri wildcardových (*.juris.sk) doménach je nutné použiť overenie identity cez takzvaný DNS Challenge. Postup, ako nastaviť tento spôsob u Websupportu nájdeme tu.
Po úspešnom vydaní certifikátu zostáva ešte jeden krok a to nastavenie nginx. Je potreba nastaviť dve veci:
- presmerovanie z nešifrovaného spojenia na šifrované http -> https
- presmerovanie všetkých domén na jednu -> https://www.jozefjuris.sk
Prvý bod je jednoduchý. Upravíme /etc/nginx/sites-enabled/jozefjuris.sk.conf
. Nastavíme, aby všetky požiadavky smerované na port 80 boli presmerované na https://www.jozefjuris.sk.
server {
listen 80;
listen [::]:80;
server_name _;
return 301 https://www.jozefjuris.sk$request_uri;
}
Druhý bod nie je o nič zložitejší. Upravíme /etc/nginx/sites-enabled/jozefjuris.sk-ssl.conf
. V prvej časti definujeme, že požiadavok, ktorý nemá doménu s názvom www.jozefjuris.sk bude presmerovaný.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name _;
ssl_certificate /etc/letsencrypt/jozefjuris.sk/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/jozefjuris.sk/jozefjuris.sk.key;
include /etc/nginx/snippets/ssl-params.conf;
return 301 https://www.jozefjuris.sk$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.jozefjuris.sk;
ssl_certificate /etc/letsencrypt/jozefjuris.sk/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/jozefjuris.sk/jozefjuris.sk.key;
include /etc/nginx/snippets/ssl-params.conf;
location / {
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;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
location ~ /.well-known {
allow all;
}
client_max_body_size 50m;
}