Архив метки: https

https и chrome — меняем ssl сертификат на сайте

Ранее я уже писал как поставить сертификат на сайте с апачем, для поддержки https. Однако с 57 версии google chrome сильно ужесточил свою политику для защищенных соединений, и мой сертификат теперь надо обновить. (не смотря на то, что в других браузерах всё отлично продолжает работать). В данной статье я расскажу подробно как поставить «хороший для хрома» сертификат с помощью сервиса letsencrypt.

Заходим на сайт letsencrypt.org , читаем getting started и видим — нам предлагают установить certbot
как самый оптимальный вариант при наличии ssh.

Перейдя на страницу certbot выбираем сервер (в моем случае apache) и ОС.
Чтобы узнать название линукс системы, используем команду uname -a
В моем случае это Ubuntu, чтобы уточнить версию убунты — используем команду lsb_release -a

После чего-то видим список команд, у меня ubuntu не сработала сразу на первой команде: sudo add-apt-repository ppa:certbot/certbot
sudo: add-apt-repository: command not found

Чтобы исправить эту ситуацию — помогло sudo apt-get install software-properties-common python-software-properties
Теперь первую часть удалось выполнить без проблем и certbot установился:

$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-apache 

Далее перейдем ко второй части — непосредственно генерация сертификата, для этого выполняем команду:

certbot --apache certonly

Отмечу что есть два варианта — в первом, это без опции certonly тогда изменения для апача будут внесены автоматически, но я не стал рисковать и воспользовался опцией certonly чтобы в дальнейшем внести изменения вручную, (так как работал сразу на боевом сервере, то было бы жалко сломать чувствительные настройки апача ). Но возможно автоматический вариант многим понравится больше. И так, после данной команды надо будте пройти через несколько вопросов, например вам предложат подписаться EFF (Electronic Frontier Foundation) и сделать пожертвование :) . В конечном итоге в папку /etc/letsencrypt/ будут положены все новые сгенерированные ключи. Остается только прописать путь (:/etc/letsencrypt/live/your-site.ru) до новых ключей в sites-available и перезапустить apache2 .

Из плюсов данного способа стоит отметить бесплатность и поддержку всеми браузерами, даже хромом. Как никак у проекта letsencrypt очень весомые спонсоры (cisco, mozilla, chrome, facebook итд итп). Из минусов — сертификат действует только в течении трёх месяцев (90 дней), и его необходимо продлить до истечения.

Теперь о продление:
Очень рекомендуется в кроне создать задачу на обновление сертификата,
Чтобы протестировать на сколько гладко все пойдет через крон поможет команда:

certbot renew --dry-run

Согласно документации — рекомендуемая частота запуска — дважды в день, а не раз в 89 дней, как возможно многие подумали. Сделано это для того, чтобы в случае когда let’s encrypt инициирует отзыв сертификата по какой-то причине сайт не был в дауне сильно долго. Не стоит беспокоиться за частый запуск — так как обновление сертификата произойдет только в случае если срок подошел к концу. А вот примерно так будет выглядеть команда в кроне :

01 0,12 * * * root /usr/bin/certbot renew >/dev/null 2>&1

Как добавить https на сайт с сервером apache

В данной статье расскажу как пошагово установить ssl сертификат на apache (вариант easy, без заморочек)

1. В первую очередь нам обязательно понадобятся закрытый и открытый ключ сертификата. Их конечно можно сгенерировать самостоятельно, командой

openssl req -new -x509 -days 30 -keyout server.key -out server.pem

однако в данном варианте у ваших посетителей в браузере появится отпугивающее предупреждение о недоверии к сайту. Чтобы этого не было, надо обратиться к компании, в которой выдают проверенные сертификаты. К счастью сейчас есть варианты, когда можно бесплатно получить сертификат. Но обычно (особенно для коммерческого использования и для юридических лиц) за сертификат придется выложить денежку, причем цена сильно варьируется в зависимости от типа сертификата, количество доменов итд итп. Я воспользовался сервисом wosign и получил халявный сертификат на 3 года :) Таким образом после первого шага у нас есть 2 ключа: открытый *.crt (расширение может быть другое, например pem) и закрытый *.key.

2. Открытый ключ кладем в папку /etc/ssl/certs/ , закрытый в папку /etc/ssl/private/

3. Настраиваем виртуальный хост для нашего сайта. Для этого идем в /etc/apache2/sites-available/ и открываем на редактирование mysyte.ru.conf

4. В открытом конфигурационном файле есть тег <VirtualHost *:80>. Копируем все содержимое этого тега и создаем точно такой же, но вместо *:80 пишем <VirtualHost *:443> . После этого осталось добавить 3 важные строчки:

SSLEngine on
# Публичный сертификат
SSLCertificateFile    /etc/ssl/certs/*.pem
# Приватный ключ
SSLCertificateKeyFile /etc/ssl/private/*.key

5. На последнем шаге делаем стандартную операцию «[sudo] service apache2 restart» и любуемся на сайт в https .