Получаем в системе 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 удалить ненужный сертификат.
Pingback: Letsencrypt удалить ненужный сертификат. - FRYAHA.RU
Спасибо огромное