FreeBSD Let’s Encrypt сертификат

Дата | 27.02.2019

FreeBSD Let’s Encrypt сертификат
Получаем в системе FreeBSD Let’s Encrypt сертификат для web сайта.
Попросили меня составить простую статью по использованию сертификата от Let’s Encrypt.
Устанавливаем certbot.

# cd /usr/ports/security/py-certbot && make install clean

После установки начинаем генерировать сертификат.

# certbot certonly --webroot -d local.local -d www.local.local
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): my_mail@local.local указываем свой mail на него будут приходить письма уведомления.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A    Соглашаемся.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N   Отказываемся.
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for www.local.local
http-01 challenge for local.local
Input the webroot for www.local.local: (Enter 'c' to cancel): /usr/local/www/local.local
тут указываем директорию к сайту.

Select the webroot for local.local:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Enter a new webroot
2: /usr/local/www/local.local
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /usr/local/etc/letsencrypt/live/local.local/fullchain.pem
   Your key file has been saved at:
   /usr/local/etc/letsencrypt/live/local.local/privkey.pem
   Your cert will expire on 2019-05-28. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /usr/local/etc/letsencrypt. You should
   make a secure backup of this folder now. This configuration
   directory will also contain certificates and private keys obtained
   by Certbot so making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

root@x_local:/ #

Либо так, что бы лишний раз не вводить почту свою и где размещается сайт.

certbot certonly --webroot --email mymail@mail.ru -w /var/www/local.local/ -d local.local -d www.local.local

Теперь проверим что у нашего php установлен модуль ssl

# php -m | grep ssl
openssl

Осталось только добавить к нужному виртуал хосту настройки ssl.

server {
        listen 1.1.1.1:443;
        server_name www.local.local;
        rewrite ^(.*) https://local.local$uri permanent;
        ssl on;
ssl_certificate /usr/local/etc/letsencrypt/live/local.local/fullchain.pem;
ssl_certificate_key  /usr/local/etc/letsencrypt/live/local.local/privkey.pem;
ssl_trusted_certificate /usr/local/etc/letsencrypt/live/local.local/chain.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
...
...
...
далее ваши настройки
}

Перезагружаем мягко nginx.

/usr/local/etc/rc.d/nginx reload

Сертификат выдается на 3 месяца, после нужно заново генерировать сертификат.
Добавляем скрипт авто генерации сертификата.
В крон добавляем.

# crontab -l | grep let
10 7 * * 6 sh /root/letsencrypt_update

И сам скрипт авто генерации.

# cat /root/letsencrypt_update
#!/bin/sh
/usr/local/bin/certbot -q renew --allow-subset-of-names
/usr/local/etc/rc.d/nginx reload
exit 0

Вроде ни чего не упустил.
Допустим, если у нас есть домен А у него сертификат от letsencrypt и у домена есть редирект 301 на домен Б.
Что бы сертификат продлялся нам нужно добавить такое правило ( location ^~ /.) перед 301 редиректом.

location ^~ /.well-known/ {
root /usr/local/www/домен A;
}
...
...
...
location / {
return 301 https://домен$request_uri;
root /usr/local/www/домен A;
}

Для апача исключения редиректа такое.

RewriteEngine On
RewriteRule ^\.well-known - [L]

Теперь домен будит продлятся.

Вот и вся инструкция как в FreeBSD Let’s Encrypt сертификат получить.

nginx ssl letsencrypt редирект на другой домен.
Letsencrypt удалить ненужный сертификат.

2 thoughts on “FreeBSD Let’s Encrypt сертификат

  1. Pingback: Letsencrypt удалить ненужный сертификат. - FRYAHA.RU

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *