Получаем SSL сертификат бесплатно

  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

AnGel

Администратор
Команда форума

AnGel

Администратор
Команда форума
27 Авг 2015
3,413
2,025
Let's Encrypt предоставляет упрощенный способ получения сертификата для включения зашифрованного соединения сайтом. Получение и установка сертификата на Apache полностью автоматизирована, поэтому мы рассмотрим установку, настройку и использование Let’s Encrypt на Nginx и Ubuntu.

У Let's Encrypt также есть свои минусы. Во-первых, сертификаты выдаются всего на 90 дней. Сертификаты на более длительный срок не предусмотрены. Во-вторых, для получения сертификатов используется множество зависимостей и плагинов. Само по себе это не страшно, но когда приходится обновлять сертификат каждые 3 месяца, неизбежно появятся проблемы. Кроме всего прочего, Let's Encrypt все еще находится в активной разработке, так что баги и ошибки неизбежны.

На некоторых хостингах получение и продление сертификата автоматически, вам нужно только сделать редирект с http на https (пример Beget)
2d0296e70453d9038142d1cdeb76d36a.jpg
Через пару минут уже было готово
ff98ffc03287dafe61b37772c123cf69.jpg

Если же нет, делаем сами
Приступим.

Все действия должны выполняться на сервере, где располагается сайт. Т.е. по команде nslookup domain.com должен возвращаться именно IP-адрес вашего сервера, на котором будут выполняться дальнейшие действия. Это очень важно!

Первое что нужно сделать — получить сам клиент для связи с удостоверяющим сервером Let’s Encrypt.
Код:
git clone https://github.com/letsencrypt/letsencrypt && cd letsencrypt
Далее переходим в режим суперпользователя и все дальнейшие действия выполняем под ним.
Код:
sudo su
Для корректной работы нам нужно отключить nginx. Собственно это самый не приятный момент, пока мы будем получать сертификат, сайт будет недоступен. Но благо это занимает буквально 1-2 минуты.
Код:
service nginx stop
Получаем сертификат:
Код:
./letsencrypt-auto certonly -d domain.com -d www.domain.com --server https://acme-v01.api.letsencrypt.org/directory
Далее скрипт произведет установку всех необходимых библиотек, затем предложит согласиться с правилами использования и последним этапом будет запрос на ввод адреса эл.почты. В этом поле нужно ввести именно тот адрес, который был указан при регистрации в программе и тот, на который пришло письмо от Let’s Encrypt.

После генерации будет выведено сообщение об успешном получении SSL-сертификата.

Сертификаты находятся в папке /etc/letsencrypt/live/domain.com/

Проверяем что сертификат был сформирован правильно:
Код:
openssl x509 -noout -text -in /etc/letsencrypt/live/domain.com/cert.pem / grep DNS
На выходе мы получаем перечень DNS-имен на которые выписан сертификат.
Код:
DNS:domain.com
DNS:www.domain.com
Ну и проверяем корректность того, что правильно прописан центр сертификации:
Код:
openssl x509 -noout -text -in /etc/letsencrypt/live/stat.hellsman.ru/cert.pem | grep Issuer
Вы должны получить следующие строки:
Код:
 Issuer: C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X1
CA Issuers - URI:http://cert.int-x1.letsencrypt.org/
Сертификат выдается на 90 (!) дней. Через 90 дней нужно будет перевыпустить SSL-сертификат, выполнив тот же запрос
Теперь дело остается за малым, настраиваем Nginx:
Код:
server {
listen 80;
server_name domain.com;
rewrite ^ https://domain.com$request_uri? permanent;
}
server {
server_name domain.com;
listen 443 ssl spdy deferred;
#SSL
ssl on;
ssl_session_timeout 24h;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=31536000;";
resolver 8.8.8.8 8.8.4.4 valid=300s;
ssl_stapling on;
ssl_stapling_verify on;
resolver_timeout 10s;
spdy_keepalive_timeout 300;
spdy_headers_comp 9;
ssl_dhparam /etc/letsencrypt/live/domain.com/dhparam.pem;
.....
}
Последней строкой в конфигурации прописан параметр ssl_dhparam. Данная настройка позволяет указать файл параметров для протокола обмена ключами Диффи — Хеллмана. В данном файле мы обязываем клиентов использовать криптоустойчивые ключи длиной 4096 байт и запрещаем понижать длину ключа. Но по умолчанию данный файл не генерируется, его нужно создать. Делается это следующей командой
Код:
openssl dhparam -out /etc/letsencrypt/live/domain.com/dhparam.pem 4096
Генерация файла может занять продолжительное время, но без него получить оценку A+ в тесте безопасности SSL практически не возможно.

С настройкой Nginx покончено, теперь нужно разрешить внешние подключения к порту 443, который используется nginx для HTTPS-соединений.
Код:
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
Собственно на этом настройка закончена. Проверяем правильность файла конфигурации и запускаем Nginx
Код:
nginx -t
service nginx start
Код:
Проверяем что сайт доступен и перенаправляем с HTTP на HTTPS
 

О нас

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

    Dark-Time 2015 - 2024

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя