Все переходят на SSL. Но порой платить деньги за то, чтобы пощупать не хочется. Очень смешно, но таковы реалии. Люди не могут понять, почему стоимость файлика часто превышает стоимость сервера. Ну да ладно. Приступим лучше к настройке NGINX с сертификатом, который мы получим бесплатно!!!

Есть такой сервис, как letencrypt. Он выдает сертификаты для домена. Пока Wildcard Certificates не выдаются. Но не печаль. В планах на январь 2018 добавить эту возможность. Важное ограничение – выдаются такие сертификаты на 90 дней. После надо либо перезаказать, либо отказаться. Для продления, есть API, как и для заказа. Хотя можно работать и с не валидным. Но тогда зачем напрягаться, ведь можно пользоваться самоподписанным?

Так, вроде бы все обсудили. Ах, нет. Будем все производить на CentOS 6.9. Версия NGINX в данном случае не сильно играет роль, да и вообще, может стоять Apache.

Приступим.

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

  1. Открываем порт на фаерволе. Лучше сразу.
  2. Останавливаем NGINX/Apache
  3. Переходим в директорию letsencrypt

  1. Генерируем сертификаты

Или только для одного

При первом запуске установятся необходимые пакеты. Надо будет указать email и ответить на вопрос, желаете ли Вы поделится своими данными. После если все ОК, то будет сформирован сертификат и поздравление:

Тут указаны пути, куда сохранились сертификаты и прочая инфа. Полезно, так что прочитайте.

Если все же выдало ошибку, проверьте, может что-то блокирует 80 порт.

  1. Что бы получить оценку A+ нужно будет сгенерировать новый DH (Diffie-Hellman cipher) key. Если Вы параноик, а большинство просто делают из принципа – больше, не хуже, то генерируем ключ в 4096 бит.

  1. Теперь у нас есть все, для работы сайта по https. Добавляем в конфиг NGINX:
  1. Запускаем NGINX, заходим на сайт по HTTPS и радуемся. Конечно это еще не все. Я долго не буду рассказывать о том, как перекидывать с http на https. Но покажу свой скрипт обновления сертификата. Он не идеален, но на первое время мне его хватает. А как говорится, нет ничего более постоянного, чем что-то временное.

Обновление происходит этой командой

Для тех кто не понял:

—webroot-path – путь к webroot заданный в настройках nginx

-d – имя домена your_domain.ua

Для самого скрипта потребуется bc, которая входит в состав CentOS и является калькулятором. Нужно для того, чтобы не мучать сервис letsencrypt.

После прописываем в крон, на запуск каждую неделю и все.

Нужна помощь в настройке SSL для домена? Обращайтесь [email protected]