Бесплатный SSL сертификат Let’s Encrypt протокола https Nginx

Краткая инструкция по настройке https с помощью SSL сертификата от Let’s Encrypt на ОС Ubuntu с веб-сервером Nginx. Сначала прочтите всё до конца, а потом выполняйте.

Если что-то не получится, обязательно задавайте вопросы в комментариях. Полная официальная инструкция на английском доступна на readthedocs.org.

После успешного перехода интернета на защищенный https протокол внешние ресурсы (например, js, тэги <img>) надо брать только по https, иначе замо́чек в адресной строке браузера не будет зелёным.

Установка SSL сертификата от Let’s Encrypt

Устанавливаем их программу. Для определённости будем считать, что мы находимся в /home/user/.
user ~ $user ~ $cd
git clone https://github.com/letsencrypt/letsencrypt

Останавливаем Nginx:

root ~ #service nginx stop

Теперь в роли веб-сервера сможет выступить программа, которую мы только что установили. Это нужно для того, чтобы их сервер мог зайти на указанный клиентом домен и убедиться в том, что таким образом можно попасть на его машину.

Запускаем их программу в первый раз (с правами root), чтобы она установила все зависимости из репозиториев:

user ~ $cd letsencrypt
root letsencrypt #./letsencrypt-auto —help

Запускаем программу во второй раз и запрашиваем сертификат (опять с правами root).

Замените mydomain.com на своё доменное имя.

root letsencrypt #./letsencrypt-auto certonly -d mydomain.com

Действуем аналогично, если есть поддомен:

root letsencrypt #./letsencrypt-auto certonly -d subdomain.mydomain.com

Программа попросит электронную почту. Она пригодится для:

  • восстановления сертификатов в случае их утери;
  • напоминания об обновлении сертификата.

После выполнения программа сообщит, что установила сертификаты в /etc/letsencrypt/live/mydomain.com.

Настройка Nginx на работу по протоколу https

Настройка домена в Nginx

Пора настроить Nginx. Замените mydomain.com на своё доменное имя.
/etc/nginx/sites-available/default

# Перенаправляем http://(www.)mydomain.com на https://mydomain.com

server { server_name mydomain.com www.mydomain.com; return 301 https://$server_name$request_uri;}

# Если есть поддомен. Если поддоменов нет, то следующие 3 строки не нужны

server { server_name subdomain.mydomain.com; return 301 https://$server_name$request_uri; }

server { listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Всё остальное, что было в секции server # …}

Настройка поддомена в Nginx

Если имеется поддомен, например, subdomain.mydomain.com, ему нужно указать такие настройки:

/etc/nginx/sites-available/subdomain

server { listen 80; listen [::]:80; listen 443 ssl; listen [::]:443 ssl; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

# Укажите свой адрес для root

root /var/www/subdomain; index index.html index.htm; server_name subdomain.mydomain.com; ssl_certificate /etc/letsencrypt/live/subdomain.mydomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/subdomain.mydomain.com/privkey.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } #

Всё остальное, что было в секции server # …}

Готово! Снова запускаем Nginx:

root ~ #service nginx start

Обновление сертификата

Через какое-то время придёт уведомление о том, что срок действия сертификата истлевает. Чтобы обновить его, нужно сделать следующие действия.

user ~ $cd ~/letsencrypt/root letsencrypt

#root letsencrypt #root letsencrypt #service nginx stop
./letsencrypt-auto renew
service nginx start

Проверка статуса SSL сертификата от Letsencrypt

Чтобы узнать статус и срок действия своего сертификата, можно в браузере зайти на сайт и щёлкнуть на иконку замка́ в адресной строке. В Safari, например, надо будет ещё нажать на «Show Certificate», а в Chrome дату можно увидеть так: щёлкнуть на замо́чек → вкладка Connection → Certificate information → General → Expires on.

Так же для установки сертификата можно воспользоваться утилитой от certbot она имеется в стандартных рeпозиториях Debian.

Возможно вас заинтересует недорогой, проверенный, честный и очень надежный хостинг отличное соотношение цены и качества от FirstVDS.

Цены на виртуальные выделенные сервера. Стремительная активация сервера, гибкие условия и заманчивые предложения по оплате.