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 :)