bg-tutorials

Как установить SSL-сертификат ACME на FortiGate

В этом руководстве показано, как устанавливать и автоматизировать SSL-сертификаты на брандмауэрах FortiGate с помощью протокола ACME с привязкой к внешним учетным записям (External Account Binding, EAB)— стандартного метода, который используют коммерческие центры сертификации для безопасной автоматизации.

Frotigate ACME SSL

Вы узнаете два способа развертывания:

  1. Встроенная интеграция FortiGate ACME с учетными данными EAB
  2. Внешняя выдача с помощью ACME.sh, затем импорт в FortiGate

Оба метода совместимы с коммерческими конечными точками ACME, которые выдают сертификаты через аутентификацию KID + HMAC.


Прежде чем начать

Вам потребуется:

  • FortiGate 7.6.0 или новее (более ранние версии не поддерживают EAB)
  • Корневой или администраторский доступ к FortiGate CLI
  • URL-адрес каталога ACME от Вашего поставщика сертификатов
  • Учетные данные EAB (идентификатор ключа + ключ HMAC)
  • Доменное имя с действительными записями A/AAAA DNS, указывающими на публичный IP-адрес Вашего FortiGate
  • Порт 80, доступный из Интернета для проверки HTTP-01

Шаг 1: Проверьте версию Вашей микропрограммы

Используйте интерфейс командной строки, чтобы проверить версию FortiOS:

get system status

Убедитесь, что появилась FortiOS 7.6.0 или более новая версия. Если нет, сначала обновите ее. Более старые версии не включают поля acme-eab-key-id и acme-eab-key-hmac.


Шаг 2: Создайте локальный объект сертификата для ACME

Выполните приведенную ниже команду:

config vpn certificate local
    edit "acme-vpn-cert"
        set enrollment acme
        set acme-ca-url "https://acme.yourca.com/v2/acme"
        set acme-eab-key-id "YOUR_EAB_KID"
        set acme-eab-key-hmac "YOUR_EAB_HMAC_KEY"
        set acme-email "[email protected]"
        set acme-domain "vpn.example.com"
        set acme-auth-url "http://vpn.example.com/.well-known/acme-challenge"
        set auto-regenerate-days 30
        set auto-regenerate enable
    next
end

Эта команда создает новый объект локального сертификата с именем acme-vpn-cert и указывает FortiGate автоматически запрашивать и обновлять его у Вашего коммерческого ЦС, используя протокол ACME с привязкой к внешнему аккаунту.

Ключевые части объяснены:

  • set enrollment acme: указывает FortiGate, что этот сертификат будет управляться через ACME, а не импортироваться вручную.
  • set acme-ca-url: конечная точка каталога ACME Вашего центра сертификации.
  • set acme-eab-key-id / set acme-eab-key-hmac: Ваши учетные данные EAB (KID и HMAC), которые авторизуют Вашу учетную запись в ЦС.
  • set acme-email: используется для уведомлений о продлении и контактов с CA.
  • set acme-domain: домен, который FortiGate будет проверять и защищать.
  • set acme-auth-url: место HTTP, где ЦС размещает и проверяет вызов ACME.
  • set auto-regenerate и auto-regenerate-days: включить автоматическое продление до истечения срока действия.

Шаг 3: Проверьте путь валидации

Ваш FortiGate должен отвечать на http://vpn.example.com/.well-known/acme-challenge/.

Если у Вас включено перенаправление HTTPS, добавьте правило обхода, чтобы путь вызова оставался на обычном HTTP во время проверки.

Вот как это сделать для виртуальных серверов:

config firewall vip
    edit "acme-http"
        set extintf "wan1"
        set extip <your-public-ip>
        set mappedip "192.168.1.99"
        set extport 80
        set mappedport 80
        set protocol tcp
    next
end

Замените <your-public-ip> и 192.168.1.99 на Ваши реальные внешний и внутренний IP-адреса. Эти значения являются условными обозначениями, используемыми только для примера.


Шаг 4: Запуск первоначального запроса

Теперь, когда FortiGate знает, как связаться с Вашим ЦС и где разместить файлы проверки, Вы можете начать процесс регистрации сертификата:

execute vpn certificate local generate "acme-vpn-cert"

Эта команда указывает FortiGate на необходимость связаться с центром сертификации, выполнить проверку домена и получить подписанный сертификат автоматически.


Шаг 5: Проверьте статус сертификата

Чтобы проверить статус Вашего сертификата, выполните следующую команду:

get vpn certificate local

Вам стоит посмотреть:

Status: valid
Issuer: Your CA Name

Если статус остается незавершенным или недействительным, перепроверьте доступность DNS и порта 80.


Шаг 6: Примените сертификат

Используйте графический интерфейс или CLI, чтобы назначить его для SSL VPN, управления HTTPS или прокси-сервисов:

config vpn ssl settings
    set servercert "acme-vpn-cert"
end

Вот как это сделать с помощью графического интерфейса:

Перейдите в раздел VPN > Настройки SSL-VPN > Сертификат сервера > Выберите acme-vpn-cert.


Шаг 7: Устранение неполадок и продление срока действия

Если сертификат не выдается сразу, наиболее распространенными причинами являются:

  • Сервер ACME не смог связаться с Вашим URL-адресом проверки (открыт порт 80).
  • Ваш KID или HMAC-ключ не соответствует тому, что ожидает ЦС.
  • Вы сбились с временного лимита воспроизведения или скорости; просто повторите попытку через несколько минут.

Как только сертификат станет действительным, FortiGate будет автоматически обрабатывать продление на основе Ваших настроек auto-regenerate-days. Вы можете проверить продление в любое время с помощью:

execute vpn certificate local renew "acme-vpn-cert"

Обратная связь: Внешняя выдача (ACME.sh) и импорт в FortiGate

Если конечная точка ACME Вашего ЦС не работает напрямую с FortiGate, Вы можете выпустить сертификат извне с помощью ACME.sh и импортировать его. Вот как это сделать:

Шаг 1: Установите ACME.sh

Выполните эти команды на любой системе Linux, macOS или BSD, имеющей доступ в Интернет. Вы не будете выполнять эти команды на самом FortiGate (FortiGate не поддерживает пользовательские сценарии оболочки).

curl https://get.acme.sh | sh
source ~/.bashrc

Это установит клиент acme.sh в Вашу домашнюю директорию и загрузит его в Вашу оболочку. Замените вставку на Ваш настоящий ЦС и данные.

Шаг 2: Зарегистрируйте свою учетную запись ACME в EAB

acme.sh --register-account \
  --server https://acme.yourca.com/v2/acme \
  --eab-kid "YOUR_EAB_KID" \
  --eab-hmac-key "YOUR_EAB_HMAC_KEY" \
  -m [email protected]

Шаг 3: Выпустите сертификат

acme.sh --issue \
  -d vpn.example.com \
  --webroot /var/www/html \
  --server https://acme.yourca.com/v2/acme \
  --eab-kid "YOUR_EAB_KID" \
  --eab-hmac-key "YOUR_EAB_HMAC_KEY"

Шаг 4: Найдите файлы сертификатов

После успешного выпуска Ваши файлы сертификатов хранятся в Вашей домашней директории под именем ~/.acme.sh/vpn.example.com/

Внутри этой папки Вы найдете:

  • fullchain.cer — полная цепочка сертификатов
  • vpn.example.com.key — Ваш закрытый ключ
  • ca.cer — сертификат промежуточного ЦС

Вы можете открыть их с помощью текстового редактора или проверить детали с помощью OpenSSL:

openssl x509 -in fullchain.cer -noout -dates -issuer -subject

Шаг 5: Импорт в FortiGate

Вы можете импортировать сертификат через графический интерфейс:

Перейдите в раздел: Система > Сертификаты > Импорт > Локальный сертификат и
загрузите сертификат и закрытый ключ.

Или Вы можете использовать CLI:

config vpn certificate local
    edit "acme-vpn-cert"
        set private-key "-----BEGIN PRIVATE KEY-----..."
        set certificate "-----BEGIN CERTIFICATE-----..."
    next
end

Шаг 6: Назначение и обновление

Как только сертификат будет обновлен, не забудьте заново назначить его для Вашего SSL VPN или веб-интерфейса FortiGate (если он не применяется автоматически). Если Вы используете внешний клиент ACME на другом сервере, настройте запланированную задачу (например, задание cron) для автоматического копирования файлов новых сертификатов на FortiGate, используя SCP или вызов API.

Пример:

scp ~/.acme.sh/vpn.example.com/fullchain.cer admin@fortigate:/root/
scp ~/.acme.sh/vpn.example.com/vpn.example.com.key admin@fortigate:/root/

Затем перезагрузите сертификат:

execute vpn certificate local import "acme-vpn-cert"

Общие вопросы

Если Вы впервые настраиваете ACME с коммерческим ЦС, у Вас обычно возникает несколько вопросов. Вот краткие ответы на те из них, с которыми мы сталкиваемся чаще всего:

Могу ли я использовать эту установку с любым коммерческим CA?

Да, при условии, что Ваш провайдер поддерживает ACME + внешнюю привязку учетных записей (EAB). Такие крупные УЦ, как Sectigo и DigiCert, уже предоставляют URL-адреса каталогов ACME и учетные данные EAB.

Нужно ли мне открывать оба порта HTTP и HTTPS для проверки?

Для проверки ACME по протоколу HTTP-01 требуется только порт 80 (HTTP). Держите HTTPS (443) открытым для обычного трафика, но не перенаправляйте запросы на проверку с HTTP на HTTPS.

Что произойдет, если мой сертификат не будет продлен автоматически?

Вы можете запустить ручное обновление в любое время с помощью:

execute vpn certificate local renew "acme-vpn-cert"

Если он по-прежнему не работает, проверьте учетные данные EAB, DNS домена, а также то, что брандмауэр по-прежнему разрешает исходящий доступ к конечной точке ACME Вашего ЦС.

Могу ли я использовать одни и те же учетные данные EAB на нескольких FortiGate?

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


Заключительные слова

Теперь Вы знаете, как установить SSL-сертификат ACME наFortiGate, либо через встроенную интеграцию EAB, либо через внешнюю выдачу с помощью ACME.sh.

Оба метода отвечают корпоративным стандартам безопасности и поддерживают полностью автоматизированное обновление с помощью коммерческих центров сертификации.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.