Как получить бесплатный SSL-сертификат и настроить его на своем сервере Nginx

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

Нам такие уведомления ни к чему т.к. пользователей это только отпугнет, поэтому воспользуемся валидным регистратором SSL-сертификатов https://www.sslforfree.com/

Интерфейс сайта интуитивно понятен, вводим название домена (без www!) в поле и нажимаем зеленую кнопку Create Free SSL Certificate

Далее нам предлагают 3 метода подтверждения того, что мы действительно являемся владельцами данного домена: автоматически через ftp, ручное подтверждение через загрузку файла и через DNS-запись. Мы остановимся на ручном подтверждении прав

Алгоритм задачи подтверждения домена для получения бесплатного SSL-сертификата следующий:

  1. Получить 2 файла верификации.
  2. Загрузить файлы на сайт
  3. Скачать бесплатный SSL сертификат.

Нажимаем Manually Verify Domain

Получаем 2 ссылки для скачивания файлов-верификации (Download File #1 и #2). Скачиваем их и загружаем их в следующую от корня сайта папку /.well-known/acme-challenge/ (предварительно требуется создать 2 папки .well-known (с точкой вначале!) и acme-challenge.

После загрузки проверяем, чтобы файлы открылись (отдали код ответа сервера 200). Допускается цепочка переадресаций. Например, при запросе по адресу /.well-known/acme-challenge/fdsft45TGGdfg345 – 301 -> / VerifyFile (200) если итоговый файл содержит ключ, то верефикация будет в любом случае подтверждена.

На этом моменте я столкнулся с задачей  – WordPress на Nginx в упор не хотели видеть физическую (реально созданную) папку с точкой .well-known, поэтому сейчас опишем решение этой задачи.

Как настроить .well-known на Nginx для подключения бесплатного SSL-сертификата от sslforfree

Заходим в файл-конфигурацию Niginx nginx.conf (Для CentOS7 расположен /etc/nginx/nginx.conf)

Находим server { } интересующего нас сайта и вписываем следующую конструкцию:

location /.well-known {

    root /usr/local/www/acme; #вместо /usr/local/www/acme – может быть любая удобная директория

}

Таким образом, мы говорим серверу Nginx: Дорогой Nginx, если увидишь запросы для сайта с вхождением .well-known в запросе знай – обращаться к содержимому надо по данному пути. Из примера выше это по пути /usr/local/www/acme.

Что можно улучшить? Если в nginx.conf у вас много сайтов, то везде использовать такую конструкцию не всегда удобно. Поэтому вынесем инструкцию, которую мы писали выше в отдельный файл acme.conf по пути  /etc/nginx/acme.conf, а в файле конфигурации в секции server { } просто добавляем incude acme.conf;

Сохраняем настройки и перезагружаем сервер Nginx. Если использовались все настройки идентичные выше, то в директории  /usr/local/www/acme создаем подраздел acme-challenge и уже в данную директорию заливаем два наших файла-верификации. После загрузки проверяем доступность файлов (нажав на ссылки-проверки на sslforfree, либо указав пути в bertal.ru). Если файлы скачиваются нажимаем Download SSL Certificate.

Нам предоставят информацию о certificate.crt, private.key и ca_bundle.crt и возможность все это выгрузить архивом. Напомню о необходимости объединить сертификат certificate.crt с цепочкой сертификата ca_bundle.crt загружаем их в разделы указанные в ssl_certificate и ssl_certificate_key настроек конфигурации Nginx и перезагружаем сервер.

Поздравляю, вы установили бесплатный SSL-сертификат на свой сайт. Если вам понравилась статья или вы хотите задать вопрос – добро пожаловать в комментарии.

Понравилась статья? - поделись с друзьями!

Категория: Server, ВебДев