Certbot to Nginx on Ubuntu 18.04 LTS

Добавим репозиторий.

apt-get update

apt-get install software-properties-common

add-apt-repository universe

add-apt-repository ppa:certbot/certbot

Обновим список пакетов.

apt-get update

Установим certbot.

apt-get install certbot python-certbot-nginx

Настроим certbot для nginx.

Предварительно уже было создано 2 сайта, с примерно такими конфигами:

server {

listen 80;

listen [::]:80;

listen 443 ssl;

server_name mysite.ddns.net;

keepalive_timeout 60;

ssl_certificate /etc/letsencrypt/live/mysite.ddns.net/fullchain.pem; # managed by Certbot

ssl_certificate_key /etc/letsencrypt/live/mysite.ddns.net/privkey.pem; # managed by Certbot

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers "HIGH:!RC4:!aNULL:!MD5:!kEDH";

add_header Strict-Transport-Security 'max-age=604800';

root /var/www/mysite;

index index.php index.html index.htm index.nginx-debian.html;

location / {

try_files $uri $uri/ /index.php$is_args$args;

}

location = /favicon.ico { log_not_found off; access_log off; }

location = /robots.txt { log_not_found off; access_log off; allow all; }

location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {

expires max;

log_not_found off;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.2-fpm.sock;

}

location ~ /\.ht {

deny all;

}

if ($scheme != "https") {

return 301 https://$host$request_uri;

} # managed by Certbot

Теперь при конфигурации certbot запросит выбрать какие сайты мы будем подписывать, мы укажим цифрами через запятую, какие сайты мы подписываем.

certbot certonly --nginx

Для обновления сертификатов выполним команду.

certbot renew --dry-run

Для автоматического обновления добавим запись в cron

nano /etc/crontab
59 23 */40 * * root certbot renew --dry-run >> /var/log/certbot.log

В 23-59 каждые 40 дней.