Let’s Encrypt - это новый центр сертификации, который предоставляет бесплатные сертификаты SSL (до определенного ограничения в неделю). Примерно месяц назад он вышел из бета-версии и поддерживается широким спектром браузеров.
Certbot - официальный клиент Let's Encrypt, разработанный Electronic Frontier Foundation. Это делает автоматическое получение и развертывание сертификатов SSL / TLS для вашего веб-сервера относительно простым процессом.
Давайте начнем.
Шаг №1
Убедитесь, что вы открыли для всех порты 80 (HTTP) и 443 (HTTPS) в группе безопасности вашего экземпляра. Certbot будет использовать это для установления соединений при создании ваших сертификатов.
Обратите внимание, что я потратил слишком много времени, чтобы выяснить, почему я не могу сгенерировать сертификат, а единственная проблема заключалась в том, что я не открыл порт 443 в моей группе безопасности экземпляра EC2.
Шаг 2
Настройте запись CNAME своего домена так, чтобы она указывала на общедоступный DNS вашего экземпляра EC2.
Шаг 3
Установите Certbot на свой экземпляр. В зависимости от вашей операционной системы и сервера вы можете узнать, как его установить, на домашней странице Certbot. Для NGINX в Ubuntu 14.04 используйте this.
wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto
Выполните эту команду в своем домашнем каталоге:
/home/ubtuntu
Шаг # 4
Остановите все существующие серверы, работающие на портах 80 и 443, поскольку они используются Certbot для проверки вашего домена и создания сертификатов.
Вы можете перезапустить эти серверы после завершения создания сертификатов.
Шаг 5
Выполните следующую команду, чтобы сгенерировать сертификаты для вашего домена:
./certbot-auto certonly --standalone -d xyz.yourdomain.com
Используя этот подход, вы можете генерировать сертификаты для нескольких доменов.
Шаг № 6
Измените конфигурацию NGINX в /etc/nginx/nginx.conf, чтобы включить SSL:
http { ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; server { listen 80; server_name xyz.yourdomain.com; location / { # Redirect any http requests to https return 301 https://$server_name$request_uri; } } server { listen 443 ssl; server_name xyz.yourdomain.com; ssl_certificate /etc/letsencrypt/live/xyz.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/xyz.yourdomain.com/privkey.pem; add_header Strict-Transport-Security “max-age=31536000”; location / { proxy_pass http://127.0.0.1:3000; } } }
Заголовок Strict-Transport-Security (HSTS) гарантирует, что любые внутренние ссылки, которые не являются HTTPS, будут автоматически перенаправлены на версию HTTPS во время сеанса HTTPS.
Шаг № 7
Наконец, перезагрузите конфигурацию NGINX:
sudo service nginx reload
Поздравляю! Ваш сайт xyz.example.com теперь успешно работает по HTTPS.
ПРИМЕЧАНИЕ. Сертификаты Let's Encrypt действительны только в течение 3 месяцев после выпуска. Так что каждые 3 месяца требуется продление. Вот как вы можете автоматизировать это с помощью задания cron.
Если этот пост вам помог, нажмите кнопку с сердечком ниже. 😄 А если нет, оставьте комментарий, чтобы рассказать мне, как я могу это исправить.
PS: Спасибо Нарендре Н. Шетти за корректуру и предложения.
Каран Таккар - руководитель фронтенда в Crowdfire - ваш супер-умный помощник по маркетингу. Его статья ранее была размещена в The Huffington Post. Он любит пробовать новые технологии в свободное время и создал Tweetify (используя React Native) и Show My PR’s (используя Golang).
Другие статьи, написанные им: