O certifikáty Let’s Encrypt zdarma se dobře postará Certbot. Stačí aktualizovat repozitář a pokračovat:
apt install certbot python3-certbot-nginx
Nyní je dostupný příkaz certbot, který zajistí potřebný certifikát a automatizace obnovy.
Pro běžící Wordpress web je nejprve nutné získat certifikát (stačí nahradit mojedomena.cz za svou):
certbot --nginx -d mojedomena.cz -d www.mojedomena.cz
Vygenerovaná konfigurace funguje, vypadá nějak takto (typicky /etc/nginx/sites-available/mojedomena.cz):
server { root /var/www/mojedomena.cz/public_html; index index.php; server_name www.mojedomena.cz; client_max_body_size 20M; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; include fastcgi_params; } listen [::]:443 ssl; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/mojedomena.cz/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/mojedomena.cz/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = www.mojedomena.cz) { return 301 https://$host$request_uri; } # managed by Certbot if ($host = mojedomena.cz) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; listen [::]:80; server_name mojedomena.cz www.mojedomena.cz; return 404; # managed by Certbot }
Je nutné přesměrovat https://mojedomena.cz na https://www.mojedomena.cz:
Nejprve je vhodné přidat vlastní blok pro https://mojedomena.cz
server { server_name mojedomena.cz; return 301 https://www.mojedomena.cz; listen [::]:443 ssl; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/mojedomena.cz/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/mojedomena.cz/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot }
A pak umazat doménu bez WWW z hlavní definice server
... server_name www.mojedomena.cz ...
Poslední změny jsou pak nutné přímo ve Wordpressu. Nejprve je nutné administraci donutit servírovat obsah stránek na HTTPS. Stačí do souboru wp-config.php na konec přidat tento řádek:
define('FORCE_SSL_ADMIN', true);
A stejně jako při migraci WP mezi doménami proběhnout celou DB a provést nahrazení textu http://www.mojedomena.cz na https://www.mojedomena.cz. Pro tento účel výborně poslouží skript Search&Replace https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
Nakonec je třeba restartovat server
systemctl restart nginx
A je to :)