Устанавливаем и настраиваем certbot на FreeBSD – osBSD

Устанавливаем и настраиваем certbot на FreeBSD - osBSD Сертификаты

Let’s encrypt сертификаты с помощью dehydrated на примере freebsd

Ставим из портов:

cd /usr/ports/security/dehydrated/
make install clean && rehash

NGINX


Создаем /usr/local/etc/nginx/letsencrypt.conf

В конфиги vhost-ов nginx’а добавляем:

include /usr/local/etc/nginx/letsencrypt.conf;

Настройка dehydrated и полчение сертификатов:

Копируем /usr/local/etc/dehydrated/config.example в config и редактируем его. Нам понадолилось изменить следующее:

Где:
— IP_VERSION — работаем по ipv4;
— KEYSIZE — размер ключа. По умолчанию тут значение 4096, но мы считаем, что без особой надобности увелчивать время загрузки страниц, дополнительно греть процессора как на строне сервера так и на строне клиента — смысла нет. Тем более, что сертификат A можно получить и на 2048;
— CONTACT_EMAIL — сюда нам буду приходит уведомления о скором истечении срока действия сертификатов и другая инйормация от Letsencrypt.

Создаем и редактируем файл /usr/local/etc/dehydrated/domains.txt:

Это значит, что будут запрошены два сертификата, каждый для своего списка доменов.

Регистрируем наш акаунт:

Дальше, хорошо бы проверить, не ошиблись ли мы где в настройках? Для этого:
— добавляем в /usr/local/etc/dehydrated/config строку:

— и вперед:

Если есть ошибки, исправляем их, повторяем запрос. Поле успешного прохождения проверок, в /usr/local/etc/dehydrated/config ремим строку:

Удаляем тестовые сертификаты и все остальное в папке /usr/local/etc/dehydrated/certs
И точно так же выполняем запрос на получение «боевых» сертификатов:

Добавление бесплатного доверенного ssl-сертификата на свой сайт. – типичный админ

Лучше поздно, чем никогда! Так гласит народная мудрость.

Вот и я с некоторым опозданием расчухал, что оказывается доверенный SSL-сертификат для вэб-ресурса можно получить бесплатно. Да и не одного, а для сотни вэб-ресурсов! Я этому очень даже обрадовался! Крутой Ну и принялся за дело.

А помогли мне в этом вот эти статьи:

http://habrahabr.ru/post/257207/
http://habrahabr.ru/post/252821/
http://habrahabr.ru/post/252529/
http://habrahabr.ru/post/254231/
http://www.8host.com/blog/nastrojka-ocsp-stapling-na-serverax-apache-i-nginx/

Респект их авторам!

Собственно, раздаёт направо и налево бесплатные доверенные сертификаты китайский ресурс wosign.com. Поначалу китайские иероглифы смущают, но это только вначале. С помощью гугл-переводчика там вполне можно ориентироваться.

Итак, регистрируемся (скриншоты взяты из статей выше):

Устанавливаем и настраиваем certbot на FreeBSD - osBSD

Вводим свои регистрационные данные и получаем уведомление, что на почту выслан код активации:

Про сертификаты:  TLS/SSL: создание CSR для мульдоменного сертификата

Устанавливаем и настраиваем certbot на FreeBSD - osBSD

Входим под своей только что созданной учёткой:

Устанавливаем и настраиваем certbot на FreeBSD - osBSD

Поле чего переходим на страничку для получения сертификата:

https://buy.wosign.com/free/

Вводим домены, для которых нужен сертификат (одна строка — один домен):

Устанавливаем и настраиваем certbot на FreeBSD - osBSD

Остальное оставляем, как на скриншоте. Вводим капчу.
Далее, система попросит подтвердить владение доменами. Нужно выбрать ящик, на который система вышлет код верификации. Система вышлет код. Этот код в течение минуты надо ввести в указанное поле. И так для всех доменов.

Устанавливаем и настраиваем certbot на FreeBSD - osBSD

После подтверждения доменов система предложит сгенерировать сертификат. Причём вручную:

Устанавливаем и настраиваем certbot на FreeBSD - osBSD

Но можно переключить опцию, чтоб система сама сгенерировала сертификат, что я и сделал. Вводим пароль на zip-файл, который потом скачаем с сертификатом.

Устанавливаем и настраиваем certbot на FreeBSD - osBSD

Всё, скачиваем готовый сертификат:

Устанавливаем и настраиваем certbot на FreeBSD - osBSD

Скачается запароленный zip-архив. Пароль тот, что ввели на один скриншот выше. В этом архиве обнаружите ещё несколько вложенных архивов. В каждом их них лежат готовые сертификаты под тот или иной вэб-сервер. Меня, естественно, интересует сертификат под nginx.

Теперь этот сертификат надо установить у себя на сервере.
НО! перед тем, как ставить сертификат, я наткнулся вот на эту информацию:

http://habrahabr.ru/post/254231/#comment_8350543

Поэтому сначала решил обновить nginx. Для этого надо сначала не забыть обновить порты. Как это делать, знает даже новичок во FreeBSD. И я об этом уже писал в других своих статьях, поищите, если совсем туго В рот мне ноги

К этому моменту в портах уже была версия nginx 1.9.3. Обновляем его с помощью portupgrade.
НО! Перед обновлением надо сначала зайти в каталог с портом: /usr/ports/www/nginx-devel. И выполнить там команду:

config

Команда вызовет меню с опциями сборки. Я выставил опции сборки ровно такие же, как у меня были и раньше. Но к ним добавил опцию SPDY. Эта опция потянула за собой установку более свежего пакета OpenSSL. Видимо, тот пакет, что идёт вместе с системой, для поддержки SPDY не подходит. Опции сборки OpenSSL я вот такие сделал:

Устанавливаем и настраиваем certbot на FreeBSD - osBSD

Оба пакета установились удачно. Ну а поскольку в системе теперь присутствует свежий пакет OpenSSL, то в файл /etc/make.conf имеет смысл добавить строчку:

WITH_OPENSSL_PORT=yes

Это для того, чтобы последующие пакеты, которые я, возможно, когда-то буду устанавливать, использовали версию OpenSSL свежую, которую только что поставили из портов.

Про сертификаты:  Включить собственный сертификат HTTPS для GitLab Community Edition для установщика Ominbus

Значит, пробую запустить свежий nginx и получаю ошибку:

Performing sanity check on nginx configuration:
Can't locate nginx.pm in @INC (@INC contains: /usr/local/lib/perl5/5.14.2/BSDPAN /usr/local/lib/perl5/site_perl/5.14.2/mach /usr/local/lib/perl5/site_perl/5.14.2 /usr/local/lib/perl5/5.14.2/mach /usr/local/lib/perl5/5.14.2 .).
BEGIN failed--compilation aborted.
nginx: [alert] perl_parse() failed: 2
nginx: configuration file /usr/local/etc/nginx/nginx.conf test failed
Starting nginx.
Can't locate nginx.pm in @INC (@INC contains: /usr/local/lib/perl5/5.14.2/BSDPAN /usr/local/lib/perl5/site_perl/5.14.2/mach /usr/local/lib/perl5/site_perl/5.14.2 /usr/local/lib/perl5/5.14.2/mach /usr/local/lib/perl5/5.14.2 .).
BEGIN failed--compilation aborted.
nginx: [alert] perl_parse() failed: 2
/usr/local/etc/rc.d/nginx: WARNING: failed to start nginx

Це значимо, что он не может найти перловский модуль nginx.pm по известным ему путям. Проблема в том, что этот модуль лежит по НЕизвестному ему пути. Решается это добавлением параметра в секцию http:

perl_modules /usr/local/lib/perl5/site_perl/mach/5.14/;

Этот параметр задаёт дополнительный путь для модулей Perl.

Значит, свежий nginx рабочий, убедились. Теперь надобно его настроить под наш новый доверенный сертификат. Для этого сначала требуется скачать промежуточный сертификат и преобразовать его. Попробовал это сделать непосредственно на FreeBSD, но ничего не вышло:

fetch http://aia6.wosign.com/ca6.server1.free.cer | /usr/local/bin/openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem > /dev/null
WARNING: can't open config file: /usr/local/openssl/openssl.cnf
ca6.server1.free.cer 100% of 1456 B 5875 kBps
unable to load certificate
34381231656:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:157:

Заморачиваться не стал, а просто взял и сделал это на Linux-машине. Там команда отлично отработала:

wget -O - http://aia1.wosign.com/ca1g2-server1-free.cer | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem > /dev/null
--2021-08-08 19:23:13-- http://aia1.wosign.com/ca1g2-server1-free.cer
Распознаётся aia1.wosign.com (aia1.wosign.com)... 54.229.101.94, 54.154.148.49
Подключение к aia1.wosign.com (aia1.wosign.com)|54.229.101.94|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 1402 (1,4K) [application/pkix-cert]
Сохранение в каталог: ««STDOUT»». 100%[=============================================>] 1 402 --.-K/s за 0s 2021-08-08 19:23:14 (115 MB/s) - written to stdout [1402/1402]

Все доверенные сертификаты безопасным методом копирую на свой сервер и складываю в отдельную папку. У меня она тут: /usr/local/etc/nginx/trustcert
Правлю секции конфига nginx. Показываю не весь конфиг, а только кусок, касающийся SSL.

Про сертификаты:  Расширение файла .REQ - Как открыть файл REQ? File Extension REQ - FileFormats

Было:

server {
        listen       443;
        server_name  technotrance.su www.technotrance.su;
        ssl                  on;
        ssl_certificate      cert.pem;
        ssl_certificate_key  cert.key;

        ssl_session_timeout  5m;

        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4 RSA: HIGH: MEDIUM: LOW: SSLv2: EXP;
        ssl_prefer_server_ciphers   on;

И стало:

server {
        listen       443 ssl spdy;
        server_name  technotrance.su www.technotrance.su;
        ssl                  on;
        resolver  8.8.8.8;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_certificate  ./trustcert/1_technotrance.su_bundle.crt;
        ssl_certificate_key  ./trustcert/2_technotrance.su.key;
        ssl_trusted_certificate ./trustcert/ca-certs.pem;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout  15m;

        ssl_protocols  SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4 RSA: HIGH: MEDIUM: LOW: SSLv2: EXP;
        ssl_prefer_server_ciphers   on;

Такие изменения провожу со всеми своими сайтами, для которых был выписан доверенный сертификат. Т.е. если кто до сих пор не понял, то сертификат один для всех сайтов.

Собственно, пояснения по важным добавившимся опциям:

SPDY—протокол прикладного уровня для передачи веб-контента. По замыслу разработчиков, данный протокол позиционируется как замена некоторых частей протокола HTTP — таких, как управление соединениями и форматы передачи данных. Основной задачей SPDY является снижение времени загрузки веб-страниц и их элементов. Статистика говорит о том, что в ряде случаев веб-страницы загружались на 55% быстрее, чем при использовании HTTP-протокола. В документации также сказано, что время загрузки страниц стало меньше на 36%.

OCSP stapling – это расширение TLS/SSL, целью которого является повышение производительности SSL-переговоров при сохранении конфиденциальности посетителя. Две основные проблемы OCSP – это приватность и большая нагрузка на серверы центров сертификации. Чтобы связаться с центром сертификации (или ЦС) и подтвердить статус сертификата, OCSP требуется браузер. Это нарушает конфиденциальность, поскольку ЦС знает, какой именно сайт был открыт и кто именно получает доступ к нему. При большом количестве посетителей веб-сайта HTTPS OCSP-сервер ЦС должен обрабатывать все запросы посетителей. OCSP stapling позволяет владельцу сертификата запрашивать сам OCSP-сервер и кэширует полученный ответ. Этот ответ «сшивается» (staple) с TLS/SSL рукопожатием через Certificate Status Request. В результате серверы ЦС не перегружаются запросами, а браузеры больше не раскрывают подробностей третьим лицам.

Вот и всё! Теперь я наслаждаюсь вот такой красотой:

Устанавливаем и настраиваем certbot на FreeBSD - osBSD

Оцените статью
Мой сертификат
Добавить комментарий