Если вы прочитали много статей о советы по конфиденциальности , вы наверняка встретите совет, в котором вам предлагается установить расширение «HTTPS везде», чтобы оно автоматически перенаправляло вас на HTTPS-версию веб-сайт по возможности. Плохо то, что расширение HTTPS везде работает только в том случае, если на посещаемом вами веб-сайте реализован SSL, а для большинства веб-мастеров это само по себе может оказаться сложной (и дорогостоящей) задачей. К счастью, благодаря движению Давайте зашифруем веб-мастерам теперь стало проще добавлять SSL-сертификаты на свои сайты.
Раньше (и в настоящее время) для настройки сертификата SSL необходимо сначала сгенерировать закрытый ключ на вашем сервере, затем купить сертификат SSL в центре сертификации (что может быть дорого) и, наконец, настроить его. на сервере. В этом процессе задействовано много технических моментов, и неправильное выполнение сделает SSL-сертификат бесполезным. С помощью проекта Let’s Encrypt можно быстро и бесплатно добавить сертификат SSL на свои сайты. И благодаря поддержке таких крупных игроков отрасли, как Mozilla, Akamai, Cisco, EFF и Google, он поддерживается большинством браузеров и операционных систем.
В этом руководстве мы рассмотрим шаги по настройке SSL-сертификата Let’s Encrypt на сервере Nginx. Для этого руководства мы используем сервер Ubuntu 14.04 и предполагаем, что вы используете рабочий сервер Nginx Ubuntu. Инструкция может отличаться для сервера Ubuntu 16.04.
Установить Let’s Encrypt
Во-первых, чтобы установить Let’s Encrypt, вам потребуется git
клонировать его из репозитория git. Установите git с помощью следующей команды:
sudo apt-get install git bc
После установки клонируйте репозиторий Let’s Encrypt:
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
Настройка среды
Прежде чем мы приступим к установке и настройке сертификата SSL, важно разрешить доступ к папке .well-known
в корневом веб-каталоге. По умолчанию все файлы и папки с расширением «.» перед именем файла скрыты и недоступны для публики. Однако в этом случае нам нужно будет предоставить общедоступному доступу к папке .well-known
, поскольку именно здесь Let’s Encrypt будет хранить специальный файл для проверки.
Перейдите в папку конфигурации вашего сайта Nginx и откройте ее (если у вас есть собственный файл конфигурации для вашего
Contents
Установить Let’s Encrypt
олчанию:cd /etc/nginx/sites-available sudo nano default
Добавьте следующие строки в блок сервера:
location ~ /\.well-known { allow all; }
Сохраните (Ctrl + O) и закройте (Ctrl + x) файл конфигурации.
Проверьте конфигурацию Nginx:
sudo nginx -t
Если все настройки работают нормально, перезагрузите конфигурацию:
sudo service nginx reload
Создать SSL-сертификат
Теперь, когда вы закончили настройку Nginx, следующим шагом будет установка SSL-сертификата.
Перейдите в папку Let’s Encrypt:
cd /opt/letsencrypt
Для создания сертификата выполните следующую команду:
./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com
Здесь нужно кое-что изменить:
- Измените
webroot-path
на корневой путь к документу вашего сайта. По умолчанию используется «/user/share/nginx/html», но ваша конфигурация может отличаться. - Замените «example.com» на свое собственное доменное имя. Обратите внимание, что «example.com» и «www.example.com» — это два разных домена. Если вы хотите, чтобы сертификат поддерживал несколько доменов, просто добавьте
-d example1.com
в конец команды. Например, чтобы настроить сертификат SSL для доменов «example.com», «www.example.com», «example1.com» и «www.example1.com», используйте следующую команду:
./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d example.com -d www.example.com -d example1.com -d www.example1.com
При первом запуске скрипт установит в вашу систему несколько файлов Python. Как только это будет сделано, начнется процесс генерации сертификата. Сначала он запросит ваш адрес электронной почты:
После этого вам будет предложено прочитать Условия обслуживания на веб-сайте Let’s Encrypt. Выберите «Согласен».
Если вы видите следующее сообщение:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2016-10-02. To obtain a new or tweaked version of this certificate in the future, simply run letsencrypt-auto again. To non-interactively renew *all* of your certificates, run "letsencrypt-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Это означает, что вы успешно создали сертификат SSL для своего сайта(ов). Если вместо этого вы увидите сообщение об ошибке, исправьте ошибку и повторите попытку.
Активация SSL-сертификата для вашего сайта
Теперь, когда вы создали сертификат SSL, пришло время активировать его для вашего сайта.
Вернитесь в папку конфигурации Nginx и откройте файл конфигурации сайта:
cd /etc/nginx/sites-available sudo nano default
Создайте новый блок сервера и добавьте в него следующую конфигурацию:
server { server_name example.com www.example.com; listen 443 ssl; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; }
Сохраните и закройте файл.
Примечание : приведенное выше представляет собой упрощенную версию блока конфигурации Nginx. Вам следует добавить в блок свою собственную конфигурацию.
Наконец, проверьте конфигурацию:
sudo nginx -t
Если все в порядке, перезагрузите Nginx:
sudo service nginx reload
Вот и все. Вы успешно настроили сертификат SSL для своих сайтов. Теперь вы можете загрузить версию URL-адреса «https», чтобы увидеть ее в действии.
Автоматическое продление SSL-сертификата Let’s Encrypt
В отличие от большинства коммерческих SSL-сертификатов, срок действия которых составляет не менее одного года, SSL-сертификат Let’s Encrypt действителен только в течение трех месяцев. По истечении этого времени вам придется продлить подписку, чтобы продолжить ее использование. В Let’s Encrypt есть опция renew
, поэтому вы можете легко обновить свои сертификаты, не проходя всю установку заново. Следующие инструкции покажут вам, как настроить задание cron для автоматического продления вашего SSL-сертификата.
Все еще находясь на сервере, откройте crontab:
sudo crontab -e
Добавьте следующие строки:
00 0 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log 05 0 * * 1 /etc/init.d/nginx reload
Приведенные выше строки будут проверять дату истечения срока действия ваших SSL-сертификатов каждый понедельник в 12 часов утра и обновлять их, если срок их действия близок к завершению. Он также перезагрузит Nginx (в 00:05), чтобы убедиться, что обновленный сертификат используется.
Сохраните и закройте crontab.
Заключение
Если у вас небольшой веб-с