В этой статье базы знаний я хочу показать вам, как с помощью Raspberry Pi установить сертификат Let’s Encrypt на ваш USG.
Введение
Мы будем использовать сервер Apache и дополнение Let’s Encrypt для Apache, работающие на Raspberry Pi, чтобы загрузить сертификат для конкретного доменного имени. Также мы будем использовать Pi для обновления этого сертификата.
Мы экспортируем сертификат с Pi и импортируем его в USG.
Для чего нужен сертификат?
С сертификатом вы избавитесь от предупреждений безопасности в вашем браузере, например, для HotSpot или SSL VPN.
Требования
- Вам нужно доменное имя (DN) (например, hotspot.hotel-mayer.de)
- Если у вас нет статического IP, вы также должны обеспечить актуальность вашего DN,
вы можете использовать опцию DDNS на вашем USG: Configuration > Network > DDNS - Если вы используете USG в сценарии двойного NAT, необходимо убедиться, что HTTP и HTTPS перенаправлены на USG
- Вам нужно знать, как правильно использовать NAT
- Вам понадобится Raspberry Pi и SD-карта для ОС
- ПК с установленными Tera Term или Putty и WinSCP
- Вам нужно уметь пользоваться SSH терминалом на USG
- USG должен быть как минимум на версии прошивки 4.30
1. Настройка Pi и Apache
В этом сценарии нам нужна только командная строка ОС для Pi (Raspbian Stretch Lite)
пожалуйста, скачайте её с сайта Raspberry Pi и установите, как описано в документации.
https://www.raspberrypi.org/downloads/raspbian/
https://www.raspberrypi.org/documentation/installation/installing-images/README.md
1.1 Включение SSH и смена пароля
Теперь нужно включить SSH. Для этого вставьте SD-карту в компьютер и создайте пустой файл с именем “SSH” в корневой папке SD-карты.
После завершения установки подключите Pi к сети, запустите его и проверьте, можете ли вы подключиться по SSH (например, с помощью Putty или Tera Term)
User: pi
Password: raspberryРекомендация 1: смените пароль, как описано здесь:
https://www.raspberrypi.org/documentation/configuration/raspi-config.md
Рекомендация 2: убедитесь, что Pi всегда получает один и тот же IP
1.2 Обновление Pi и установка Apache-сервера
Теперь можно проверить и установить обновления
sudo apt update && sudo apt upgrade --yesПосле этого установим сервер Apache
sudo apt install apache2 --yesПосле установки вы должны увидеть стандартную страницу Apache, перейдя по IP-адресу Raspberry.
Теперь перезагрузим Pi:
shutdown -rТем временем мы настроим (временную) переадресацию портов на Pi.
2. Переадресация портов
Чтобы открыть порты 80 и 443 для интернета. Ниже описаны необходимые шаги
2.1 Измените HTTPS-порт USG, например, на 8443
Теперь вы можете получить доступ к USG так: https://192.168.1.1:8443
2.2 Настройте переадресацию портов для HTTP и HTTPS
Проверьте, можете ли вы получить доступ к тестовой странице Pi из интернета
3. Создание и экспорт сертификата
Перед получением сертификата Let's Encrypt нужно установить дополнение Let’s Encrypt для Apache. Оно поможет выполнить сертификацию вашего доменного имени.
sudo apt install certbot python-certbot-apache --yes3.2 Генерация первого сертификата
Теперь сгенерируем первый сертификат:
sudo certbot --apacheВам нужно будет заполнить форму. Вас спросят, хотите ли вы сделать постоянное перенаправление.
Сертификат будет запрошен и автоматически установлен на сервер Apache.
3.3 Экспорт сертификата и его загрузка
Теперь вы можете экспортировать сертификат с отметкой времени.
sudo openssl pkcs12 -export -out /tmp/myusg_"$(date +"%Y-%m-%d")".p12 -inkey /etc/letsencrypt/live/[your_domain]/privkey.pem -in /etc/letsencrypt/live/[your_domain]/cert.pemВам нужно будет ввести пароль. Обязательно запомните его, он понадобится при импорте в USG.
Чтобы получить сертификат с Pi, нужно изменить права доступа для файла myusg_[date].p12.
sudo chmod 777 myusg[date].p12Теперь вы можете скачать файл из папки /tmp с помощью WinSCP.
4. Импорт сертификата в USG
4.1 Скачайте и импортируйте корневые и промежуточные сертификаты Let's Encrypt
Чтобы USG доверял ранее экспортированному сертификату, нужно импортировать корневые и промежуточные сертификаты от Let's Encrypt:
https://letsencrypt.org/certificates/
Убедитесь, что сертификаты сохранены в формате pem (например, letsencryptauthorityx3.pem).
Теперь на USG перейдите в Configuration > Objects > Certificates > Trusted certificates и импортируйте корневые и промежуточные сертификаты.
4.2 Импортируйте и активируйте ваш сертификат
На USG перейдите в Configuration > Objects > Certificates > My Certificates и импортируйте сертификат (вам нужно будет ввести пароль).
Перейдите в Configuration > System > WWW, в разделе Server Certificate выберите ваш импортированный сертификат.
5. Правильная настройка перенаправления HTTP на HTTPS
5.1 Деактивируйте NAT для Pi
Чтобы освободить порты 80 и 443 для USG, нужно деактивировать NAT для Pi. Перейдите в Configuration > Network > NAT, найдите и деактивируйте правила, отвечающие за NAT. Пожалуйста, не удаляйте правила, они понадобятся позже.
5.2 Верните HTTPS-порт USG обратно на 443 и настройте перенаправление HTTP на HTTPS
Перейдите в Configuration > System > WWW и установите HTTPS-порт обратно на 443. Убедитесь, что перенаправление HTTP включено.
5.3 Избавьтесь от IP-адреса
Теперь USG будет использовать импортированный сертификат. Остаётся "проблема", что USG перенаправляет HTTP на HTTPS так:
https://192.168.1.1/redirect.cgi?arip=[your_dyndns]&original_url=http://[your_dyndns]/
Это, конечно, вызовет проблему с сертификатом. Чтобы окончательно избавиться от этого сообщения, откройте SSH-сессию на вашем USG и введите команды:
Router> configure terminal
Router(config)# web-auth redirect-fqdn [your_domainname]
Router(config)# write
Router(config)# exit
Router> writeТеперь перенаправление будет выглядеть так:
https://[your_domain]/redirect.cgi?arip=[your_domain]&original_url=http://[your_domain]/
Поздравляем, теперь у вас на USG работает сертификат Let's Encrypt.
Обновление сертификата
Сертификаты Let's Encrypt действительны 90 дней. Это значит, что сертификат нужно обновлять каждые три месяца.
1. Снова откройте порты HTTP и HTTPS на Pi
а) снова измените HTTPS-порт USG (пункт 2.1)
б) снова активируйте NAT для HTTP/HTTPS для Pi (пункт 2.2)
2. Подключитесь по SSH к Pi и обновите сертификат
Откройте SSH-сессию на вашем Pi и введите команду
sudo certbot renewЭто обновит сертификат ещё на 90 дней
3. Экспортируйте и импортируйте сертификат
Теперь выполните шаги из пункта 3.3
4. Обновите сертификат на USG
Продолжите с шага 4.2
5. Верните порты обратно
Выполните шаги из пунктов 5.1 и 5.2
Поздравляем, вы обновили сертификат Let's Encrypt на вашем USG.
Отказ от ответственности: Пожалуйста, понимайте, что это лишь описание того, как установить сертификат Let's Encrypt на ваш USG. Если возникнут проблемы с Raspberry Pi, мы не можем предоставить поддержку по вопросам, связанным с Pi!

Комментарии
0 комментариевВойдите в службу, чтобы оставить комментарий.