Настройка Certbot и Nginx для работы с HTTPS в Windows

#15  понедельник, 3 июля 2023 г.  9 минут(ы)  761 слово

Установка Certbot на Windows

  • Проверьте официальный сайт Certbot для получения полных инструкций https://certbot.eff.org/instructions

  • Загрузите последнюю версию программы установки Certbot для Windows по адресу https://github.com/certbot/certbot/releases/latest/download/certbot-beta-installer-win_amd64_signed.exe.

  • Запустите программу установки и следуйте указаниям мастера. Программа установки предложит каталог установки по умолчанию, C:\Program Files(x86), замените его на C:\Certbot).

  • Чтобы запустить оболочку для Certbot, выберите меню "Пуск", введите cmd (для запуска CMD.EXE) или powershell (для запуска PowerShell) и нажмите "Запуск от имени администратора" в появившемся контекстном меню.

  • Перейдите в каталог Certbot

cd C:\Certbot

Чтобы выполнить команду на Certbot, введите в оболочке имя certbot, затем команду и ее параметры. Например, чтобы отобразить встроенную справку, выполните:

C:\Certbot>certbot --help

Выберите, как вы хотите запустить Certbot

Вы не против временной остановки вашего сайта?

Да, мой веб-сервер в настоящее время не запущен на этой машине.

Остановите свой веб-сервер, затем выполните эту команду, чтобы получить сертификат. Certbot временно запустит веб-сервер который уже использует порт 80 на вашей машине.

C:\Certbot>certbot certonly --standalone

Нет, мне нужно, чтобы мой веб-сервер работал.

Если у вас есть веб-сервер, который уже использует порт 80 и вы не хотите останавливать его на время работы Certbot, запустите эту команду и следуйте инструкциям в терминале.

C:\Certbot>certbot certonly --webroot

Важное замечание: Чтобы использовать плагин webroot, ваш сервер должен быть настроен на обслуживание файлов из скрытых каталогов. Если /.well-known обрабатывается особым образом в конфигурации вашего веб-сервера, вам может потребоваться изменить конфигурацию, чтобы файлы внутри /.well-known/acme-challenge обслуживались веб-сервером

Проверка автоматического обновления

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

C:\Certbot>certbot renew --dry-run

Если вам нужно остановить ваш веб-сервер для запуска Certbot (например, если вы использовали автономный аутентификатор на машине, где обычно используется порт 80), вам нужно отредактировать встроенную команду и добавить флаги --pre-hook и --post-hook для автоматической остановки и запуска вашего веб-сервера.

Флаги --pre-hook и --post-hook позволяют запускать команды до и после основной операции Certbot соответственно. Это особенно полезно, когда нужно остановить веб-сервер перед обновлением сертификата и затем снова его запустить. Вот как вы можете использовать эти флаги с Nginx на Windows через WSL:

certbot certonly --standalone --pre-hook "net.exe nginx stop" --post-hook "net.exe nginx start" -d yourdomain.com

В этой команде:

  • certbot certonly --standalone говорит Certbot запрашивать сертификат, работая в автономном режиме. Это означает, что Certbot самостоятельно запускает временный веб-сервер для проверки вашего домена.
  • --pre-hook "net.exe nginx stop" говорит Certbot остановить Nginx перед запросом сертификата.
  • --post-hook "net.exe nginx start" говорит Certbot запустить Nginx снова после запроса сертификата.
  • -d yourdomain.com указывает домен, для которого вы запрашиваете сертификат.

Замените yourdomain.com на ваш настоящий домен.

Эти флаги также можно использовать с командой certbot renew для автоматического обновления сертификатов:

certbot renew --pre-hook "net.exe nginx stop" --post-hook "net.exe nginx start"

В этой команде certbot renew говорит Certbot проверить все установленные сертификаты и обновить те, которые скоро истекут.

Если ваш веб-сервер - Apache 2.4, добавьте следующее к команде certbot renew:

--pre-hook "net.exe stop Apache2.4" --post-hook "net.exe start Apache2.4".

Процесс настройки Nginx для использования SSL-сертификата Let's Encrypt:

  • Получите сертификат, используя win-acme, Certify The Web или Certbot. Убедитесь, что вы знаете, где хранятся файлы сертификата и ключа.

  • Откройте файл конфигурации Nginx для вашего сайта. Он обычно находится в каталоге C:\nginx\conf\nginx.conf.

  • Добавьте следующие строки в блок server для вашего сайта, заменив /etc/letsencrypt/live/your-domain-name/fullchain.pem и /etc/letsencrypt/live/your-domain-name/privkey.pem на путь к вашему сертификату и ключу:

Пример для сайта d00m4ace.com

http {
    server {
        listen 80;
        server_name d00m4ace.com; # например d00m4ace.com

        # Перенаправление всех HTTP-запросов на HTTPS
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl;
        server_name d00m4ace.com; # например d00m4ace.com

        # Настройки SSL сертификата
        ssl_certificate C:\Certbot\live\hexplay.com\fullchain.pem; # managed by Certbot
        ssl_certificate_key C:\Certbot\live\hexplay.com\privkey.pem; # managed by Certbot

        # Другие настройки SSL, если необходимо
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 5m;

        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        # Добавьте здесь ваши настройки для обработки HTTPS-соединений
        # Например:
        location / {
            root   C:/microweb/webroot # путь_к_вашему_корневому_каталогу;
            index index.html;
        }
    }

    # Добавьте другие серверные блоки, если необходимо
}
  • Проверьте, что ваша конфигурация Nginx корректна, используя команду nginx -t.
nginx -t
  • Если все в порядке, перезапустите Nginx, чтобы применить новую конфигурацию. Это обычно делается с помощью команды nginx -s reload.
nginx -s reload

Пожалуйста, имейте в виду, что Let's Encrypt выдает сертификаты только на 90 дней, поэтому вам нужно будет настроить автоматическое обновление сертификатов. Это обычно делается с помощью cron задания на Unix-подобных системах или с помощью планировщика заданий Windows.