Проект py-letsencrypt, SSL/TLS, Apache, FreeBSD, установка настройка

20.10.2016 при попытке обновления сертификатов, выяснилось, что клиент py27-letsencypt заменён на py27-certbot и обновление сертификатов letsencrypt делаем так.

Проект letsencrypt, даёт возможность свободно получить SSL/TLS сертификаты. Цель сделать шифрованное соединение максимально доступным. Проект развивается. На FreeBSD cтавится клиент letsencrypt, ему нужны 80 и 443 порты. Через него запрашиваются и скачиваются сертификаты для указанных доменов. Пока сертификаты ставим в ручную, но в будующем letsencrypt обещает процесс полностью автоматизировать.

# cd /usr/ports/security/py-letsencrypt

# make

Copying letsencrypt.egg-info to /usr/ports/security/py-letsencrypt/work/stage/usr/local/lib/python2.7/site-packages/letsencrypt-0.3.0-py2.7.egg-info
running install_scripts
Installing letsencrypt script to /usr/ports/security/py-letsencrypt/work/stage/usr/local/bin
Installing letsencrypt-renewer script to /usr/ports/security/py-letsencrypt/work/stage/usr/local/bin
writing list of installed files to ‘/usr/ports/security/py-letsencrypt/work/.PLIST.pymodtmp’
====> Compressing man pages (compress-man)
#

# make install
Installing for py27-letsencrypt-0.3.0

===========================================================================

The Let’s Encrypt Client is BETA SOFTWARE. It contains plenty of bugs and
rough edges, and should be tested thoroughly in staging environments before
use on production systems.

This port installs the «standalone» Python client only, which does not use and
is not the letsencrypt-auto bootstrap/wrapper script.

To obtain certificates, use use the ‘certonly’ command as follows:

# sudo letsencrypt —server <server-URL> certonly

Note: The client currently requires the ability to bind on TCP port 80. If
you have a server running on this port, it will need to be temporarily stopped
so that the standalone server can listen on that port to complete
authentication.

The letsencrypt plugins to support apache and nginx certificate installation
will be made available soon in the following ports:

* Apache plugin: security/py-letsencrypt-apache
* Nginx plugin: security/py-letsencrypt-nginx

===========================================================================

Должен установиться letsencrypt клиетн, с помощью которого будет произведена аутоинтификация сервера, на котором запускается клиент, и можно получить сертификат. Клиент работает только на 80м порту, поэтому, перед запуском клиента, приостанавливаем сервер, если он работает на 80м. Далее сертификат устанавливаем вручную.

Смотрим что как:
# letsencrypt
No installers are available on your OS yet; try running «letsencrypt-auto certonly» to get a cert you can install manually
root@anteh:~ # letsencrypt »
usage:
letsencrypt [SUBCOMMAND] [options] [-d domain] [-d domain] …

The Let’s Encrypt agent can obtain and install HTTPS/TLS/SSL certificates. By
default, it will attempt to use a webserver both for obtaining and installing
the cert. Major SUBCOMMANDS are:

(default) run Obtain & install a cert in your current webserver
certonly Obtain cert, but do not install it (aka «auth»)
install Install a previously obtained cert in a server
revoke Revoke a previously obtained certificate
rollback Rollback server configuration changes made during install
config_changes Show changes made to server config during installation
plugins Display information about installed plugins
letsencrypt: error: unrecognized arguments:
#

Освобождаем порт 80:

# apachectl stop

Пробрасываем и/или открываем порт 443

# letsencrypt certonly -d anteh.ru -d www.anteh.ru -d anteh.com -d www.anteh.com -d adc.anteh.ru -d www.adc.anteh.ru

Вводие email в диалоговое окно, далее, если 443 порт открыт, появится второе диалоговое окно с предложением ознакомиться с лицензией по адресу https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf

Если указывать несколько доменов, как было сделано выше, то получаем ошибку, нужно по одному, как показано ниже:
# letsencrypt certonly -d anteh.ru -d www.anteh.ru

IMPORTANT NOTES:
— Congratulations! Your certificate and chain have been saved at
/usr/local/etc/letsencrypt/live/anteh.ru/fullchain.pem. Your cert
will expire on 2016-05-11. To obtain a new version of the
certificate in the future, simply run Let’s Encrypt again.
— If you like Let’s Encrypt, please consider supporting our work by:

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

Далее получаем для anteh.com:

# letsencrypt certonly -d anteh.com -d www.anteh.com

И для adc.anteh.ru

# letsencrypt certonly -d adc.anteh.ru -d www.adc.anteh.ru

Запускаем Apache сервер.

Смотрим в указанную папку и видим обещанное

privkey.pem — private key
cert.pem — server cert only
chain.pem — intermediates
fullchain.pem — server cert + intermediates

Обновление сертификата:

Отключаем сервер или всё, что весит на 80м порту и:

Предыдущий, уже не рабочий способ 1:

# letsencrypt —renew certonly -d anteh.ru -d www.anteh.ru

# letsencrypt —renew certonly -d anteh.com -d www.anteh.com

Предыдущий, уже не рабочий способ 2:

На 28.07.2016 достаточно использовать 1 команду для обновления всего:

# letsencrypt renew

На 20.10.2016 обновление делается через py-certbot:

certbot certonly -d site.ru -d www.site.ru

Отвечаем на диалоговые запросы. Если возникли прблемы при обновлении, пробуем обновить все порты.

Сертификаты для доменов, описанных в …/letsencrypt/renewal/*.conf будут обновлены

Сертификаты обновлены, проверяем в браузере дату истечения действия сертификата. Через crontab можно автоматизировать процесс. Далее через https://www.ssllabs.com/ssltest/ проверяем что получилось.

Установка SSL/TLS сертификата на сервер для каждого из доменов

Пробрасываем, и/или открываем 80 443 порты в httpd-vhosts.conf, для нужных доменов прописываем:
#site.ru
<VirtualHost *:80>
ServerName site.ru
DocumentRoot «/site.ru/site.ru»
Redirect permanent «/» «https://site.ru/»
</VirtualHost>
<VirtualHost *:80>
ServerName www.site.ru
DocumentRoot «/site.ru/site.ru»
Redirect permanent «/» «https://site.ru/»
</VirtualHost>
<VirtualHost *:443>
ServerName www.site.ru
DocumentRoot «/site.ru/site.ru»
Redirect permanent «/» «https://site.ru/»
SSLCertificateFile /usr/local/etc/letsencrypt/live/site.ru/fullchain.pem
SSLCertificateKeyFile /usr/local/etc/letsencrypt/live/site.ru/privkey.pem
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
</VirtualHost>
<VirtualHost *:443>
SecRuleEngine On
ServerName site.ru
ServerAlias www.site.ru
ServerAdmin admin@site.ru
DocumentRoot «/site.ru/site.ru»
ErrorLog «/var/log/site.ru-error_log»
CustomLog «/var/log/site.ru-customlog» combined
SSLCertificateFile /usr/local/etc/letsencrypt/live/site.ru/fullchain.pem
SSLCertificateKeyFile /usr/local/etc/letsencrypt/live/site.ru/privkey.pem
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3

</VirtualHost>

Производится редирект с 80 на 443 для всех запросов, также реализованна склейка www и не www как для http так идля https. Модуль mod_rewrite не иcпользуем, не рекомендуется, всегда есть альтернативы.

Сертификат выдаётся на 3 месяца, далее делаем обновление, или заранее настраиваем автообновление через скрипт + crontab. Обновление действует следующие 3 месяца. На текущий момент 2 раза производилось обновление сертификата, работает.
Источник

Запись опубликована в рубрике *Unix,*Linux, FreeBSD. Добавьте в закладки постоянную ссылку.

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

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

Я не спамер This plugin created by Alexei91