четверг, 9 февраля 2017 г.

Бесплатный сертификат для работы сайта по HTTPS

Еще в конце 2015 года Google объявил о предпочтительном индексировании HTTPS страниц, соответственно было бы не плохо ознакомится с основами данного протокола. Ниже приведена инструкция по базовой настройке сервера NGINX для работы по протоколу HTTPS с сертификатом выданным удостоверяющим центром признанным среди всех популярных браузеров.

Первые ссылки о бесплатных сертификатах ведут на WoSign или StartCom эти центры использовали какие-то махинации и firefox занес их в черный список до окончания разбирательств, о чем сообщил у себя в блоге, можете ознакомится https://blog.mozilla.org/security/2016/10/24/distrusting-new-wosign-and-startcom-certificates/
Т.е. использование такого сертификата не рекомендуется.

Будем использовать сертификат от letscrypt по совету linux-сообщества linux@conference.jabber.ru, к тому же в репозиториях есть бот https://certbot.eff.org/ который позволяет удобно работать с удостоверяющим центром https://letsencrypt.org/
Устанавливаем бота(для Debian jessie, инструкции для других дистрибутивов есть на сайте бота):

apt-get install certbot -t jessie-backports

Для получения сертификата необходимо пройти проверку на владельца домена, чтобы провести проверку не останавливая работы веб-сервера используйте команду:

certbot certonly --webroot -w /var/www/transrouting.ru -d transrouting.ru -d www.transrouting.ru

в которой укажите расположение корневого каталога сайта /var/www/example, и перечислите домены на который будет распространятся сертификат (-d example.com -d www.example.com) важно, чтобы информация о доменах была в DNS иначе проверка на владельца не пройдет.

По завершению в соответствующем каталоге появятся файлы:

root@website:/# ls /etc/letsencrypt/live/transrouting.ru/
cert.pem chain.pem fullchain.pem privkey.pem
root@website:/#

Сертификат получен, можно приступить к настройке NGINX на работу по протоколу HTTPS. Делаем правки в секции server, указываем на работу сервера на 443 порту, SSL и указываем пути до открытого ключа, сертификата и соответствующих параметров протоколов безопасности:

server {
listen 443 ssl default_server;


ssl_certificate /etc/letsencrypt/live/transrouting.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/transrouting.ru/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;


root /var/www/transrouting.ru;

index index.html index.php index.htm index.nginx-debian.html;

server_name _;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;

fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}


Можно воспользоваться онлайн генератором SSL конфигураций для различных веб серверов:
https://mozilla.github.io/server-side-tls/ssl-config-generator/

Но вместе с тем у бесплатности такого сертификата есть и ограничения это срок подписи сертификата, который истекает спустя 90 дней и всё, что нам надо сделать это настроить автоматическое получение обновленного сертификата. Для этой задачи в планировщике заданий добавим следующую задачу в cron:

* */12 * * * certbot renew

каждые 12 часов запускать certbot(кто испытывает проблемы с пониманием работы crontab посетите сайт https://crontab.guru/), параметры с которым будет запускаться данный бот хранятся в файле /etc/letsencrypt/renewal/transrouting.ru.conf который автоматически создается при первом успешном получении сертификата. Пути до обновленных сертификатов остаются прежними и конфигурация nginx не требует исправлений.

Для проверки подлинности и корректности установки сертификата рекомендую использовать следующие ресурсы:
https://www.ssllabs.com/ssltest/ - очень мощный инструмент, подробно выводит информацию о сертификате и возможных ограничениях для работы с сайтом устаревших ОС и браузеров.
https://www.sslshopper.com/ssl-checker.html

Комментариев нет:

Отправить комментарий