It-e.RU
Цифровой двигатель вашего бизнеса.

Бесплатные SSL сертификаты letsencrypt

Бесплатные SSL сертификаты letsencrypt

Бесплатные SSL сертификаты letsencrypt


Потерял я сертификат для доступа в панель управления StartSSL и морочиться не хотелось с восстановлением доступа. Попробовал у неких китайских ребят wosign, но что-то не получилось, поэтому разобрался с letsencrypt. Меня смущало то, что необходимо ставить какой-то сторонний софт, но, внимательнее почитав инструкцию, я понял, что сторонный софт можно держать в контейнере и просто при необходимости в него проксировать запросы, что вполне меня устраивает :)
Итак, устанавливаю ПО:
 emerge -av app-crypt/letsencrypt
Для других дистрибутивов есть инструкция (достаточно просто склонировать git-репозитарий и доставить python пакетики через pip).

Сертификат выдаётся автоматически с помощью клиента из консоли на 90 дней, так что придётся обновлять сертификат.
Теперь сделаем конфиг для веб-севрера. У меня везде работает читый nginx:
location ~ ^/(.well-known/acme-challenge/.*)$ {
        proxy_pass http://letsencrypt/$1;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Зарулил на upstream, который есть контейнер.
Теперь переадресуем все запросы на https:
server {
        listen 192.168.254.2:80;
        server_name _;
        root /var/www/it-e.ru;
        index index.htm;

        if ($request_uri !~ "^/(index.htm(l)?|.well-known/acme-challenge/.*)$")
        {
          return 301 https://$host$request_uri;
          }

        include /etc/nginx/letsencrypt.conf;

        location / {
                index index.html index.htm;
                autoindex off;
        }
}
То есть тут я сказал всем клиентам переходить на https://$host$request_uri, кроме запросов на index.html и .well-known/acme-challenge. То есть теперь все мои домены отвечают по https, кроме запросов необходимых для работы letsencrypt. Соотвественно я не запрашиваю обновление сертификата, поэтому в локешне ".well-known/acme-challenge." ответ для клиента будет 502. Это можно поменять.
Теперь запустим команду в контейнере:
letsencrypt --agree-tos --renew-by-default --standalone --standalone-supported-challenges http-01 --http-01-port 9999 --server https://acme-v01.api.letsencrypt.org/directory certonly -d it-e.ru
Сгенерируются сертификаты в директории /etc/letsencrypt/archive/it-e.ru/. Но мы будет использовать симлинк из /etc/letsencrypt/live/it-e.ru/. Измените конфиг сервера:
        listen 192.168.254.2:443 ssl;

        ssl_certificate /etc/letsencrypt/live/it-e.ru/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/it-e.ru/privkey.pem;
А ещё лучше подключите http2 и прочие интересные настроечки, но это расмотрим в другой статье.
Обновление сертификата делаем через крон первого числа каждого месяца:
0 1 1 * * /usr/bin/letsencrypt renew >> /dev/null 2>&1
10 1 1 * * /etc/init.d/nginx restart >> /dev/null 2>&1
ну или reload :)
Имейте ввиду, что существует ограничение на число выдаваемых сертификатов - rate limit.
Подготовка сертификата для ejabberd:
openssl rsa -in /etc/letsencrypt/live/jabber.it-e.ru/privkey.pem -out /tmp/privkey.key
cat /tmp/privkey.key >> /etc/ssl/ejabberd/it-e.ru.pem
cat /etc/letsencrypt/live/jabber.it-e.ru/fullchain.pem >> /etc/ssl/ejabberd/it-e.ru.pem
Теперь подправьте конфиги и автоматизируйте под свои нужды.

Пожалуйста, уважайте труд автора, при копировании материалов сохраняйте ссылку на источник!

Комментарии (0)







Разрешённые теги: <b><i><br>Добавить новый комментарий: