Сертификаты Let's Encrypt

На днях меня посетила мысль, а не сделать ли свой сайт доступным через https при этом не было желания покупать дорогостоящий сертификат. Поэтому обратился к гуглу, чтобы найти возможные бесплатные решения. И такие решения нашлись. Одним из них оказался Let's Encrypt, который я и решил попроовать. Особенность сертификатов Let's Encrypt является то, что они бесплатны и выдаются на 90 дней, после чего их нижу перевыпускать, что делается в автоматическом режиме. 

Для того чтобы выпустить сертификат нужно, чтобы на сервере был установлен git. С помощью которого можно получить клиент letsencrypt, выполнив команду:

git clone https://github.com/letsencrypt/letsencrypt

После чего переходим в полученную директорию

cd letsencrypt

После чего запустим утилиты letsencrypt-auto:

./letsencrypt-auto --help

При первом запуске команда letsencrypt-auto  скачает все необходимые зависимости и обновит исходные коды клиента.
Если вы используете Apache, то для установки сертификата будет достаточно выполнить команду из-под  root-a:

./letsencrypt-auto --apache

Сам я использую nginx, для которого есть аналогичная команда, но по официальной документации она не всегда корректно работает. Поэтому я решил пойти другим путем, вызвав команду:


./letsencrypt-auto certonly --standalone -d example.com -d www.example.com

предварительно погасив веб-сервер, чтобы освободить 80-ый порт, после чего Let's Enrypt автоматом проверит ладение доменов и выдаст сертификат, информация о которых будет помещена в 

/etc/letsencrypt/live/example.com/

В этом каталоге будут ссылки на файлы с ключами:

  • privkey.pem  — приватный ключ для сертификата. Хранить в секрете. Это то, что Apache требует для SSLCertificateKeyFile, и nginx для ssl_certificate_key.
  • cert.pem  — только сертификат сервера, то что требует Apache для SSLCertificateFile.
  • chain.pem  — все сертификаты, которые должны обслуживаться браузером БЕЗ сертификата сервера. Это Apache требует для SSLCertificateChainFile.
  • fullchain.pem  — вся цепочка, объединение chain.pem и cert.pem. Это nginx требует для ssl_certificate.

После чего в настройках сервера для nginx дописываем следующие строки:

server { 
       ...
       listen 443 ssl;
        ssl_certificate "/etc/letsencrypt/live/example.com/fullchain.pem";
        ssl_certificate_key "/etc/letsencrypt/live/example.com/privkey.pem";
        ssl_session_timeout 5m;
        ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
        ssl_prefer_server_ciphers on;
        ...
}


После чего запускаем nginx и сервер доступен по HTTPS.


 

Тэги: ssl безопасность интернет


 


 
архив

подписка