← Cloudflare SSL/TLS / ssl / keyless-ssl / configuration
Cloudflare Tunnel
Благодаря интеграции с Cloudflare Tunnel, вы можете направлять трафик на сервер ключей через защищённый канал и не раскрывать его в открытом интернете.
Перед началом работы
Поддерживаемые платформы
Keyless прошел тестирование на amd64 и arm архитектур. Бинарный файл сервера ключей, скорее всего, будет работать на всех архитектурах, поддерживаемых Go. Поддержка в коде может существовать и для других процессоров, но такие архитектуры не тестировались.
Помимо работы на физическом сервере, сервер ключей должен без проблем работать в виртуализированной или контейнеризированной среде. Важно правильно настроить входящий доступ к нужному TCP-порту и доступ файловой системы к закрытым ключам (если используется хранение в файловой системе).
Поддерживаемые операционные системы
Для запуска Keyless нужна поддерживаемая операционная система (ОС). Поддерживаемые операционные системы:
- Ubuntu 20.04 LTS (Focal), 22.04 LTS (Jammy), 24.04 LTS (Noble)
- Debian 11 (Bullseye), 12 (Bookworm), 13 (Trixie)
- RHEL 8, 9, CentOS 8 и CentOS Stream 9
- Amazon Linux 2, 2023
Настоятельно рекомендуем использовать операционную систему, которая всё ещё поддерживается производителем (то есть получает обновления безопасности), поскольку ваш сервер ключей будет иметь доступ к вашим закрытым ключам.
1. Установка cloudflared на сервере ключей
Сначала установите cloudflared на вашем сервере ключей.
Этот процесс отличается в зависимости от того, используете ли вы командная строка или Панель управления Cloudflare.
2. Создание туннеля и добавление маршрута
Затем создайте Cloudflare Tunnel.
Этот процесс отличается в зависимости от того, используете ли вы командная строка или Панель управления Cloudflare.
При создании туннеля перейдите в раздел CIDR вкладку и введите приватный IP-адрес вашего сервера ключей. Вы также можете добавить маршрут CIDR после создания туннеля.
После создания туннеля используйте Cloudflare API, чтобы Список маршрутов туннеля, сохранив следующие значения для следующего шага:
"virtual_network_id""network"
3. Загрузите сертификаты Keyless SSL
Прежде чем настраивать ключевые серверы, необходимо загрузить соответствующие SSL-сертификаты на периферийные серверы Cloudflare. Во время завершения TLS-соединения Cloudflare предъявляет эти сертификаты подключающимся браузерам, а затем (для непродолженных сессий) обращается к указанному ключевому серверу для завершения рукопожатия.
Загружайте в Cloudflare сертификаты только с теми SAN, которые вы хотите использовать с Cloudflare Keyless SSL. Все имена хостов Keyless SSL должны быть проксируется.
Вам нужно будет загрузить каждый сертификат, используемый с Keyless SSL.
Чтобы загрузить сертификат Keyless через API, отправьте POST запрос, который включает "tunnel" объект.
"tunnel": {
"vnet_id": "<VIRTUAL_NETWORK_ID>",
"private_ip": "<NETWORK>"
}4. Настройте и активируйте сервер ключей
Наконец, установите сервер ключей в своей инфраструктуре, добавьте в него SSL-ключи сертификатов, которые вы хотите использовать для завершения TLS на границе сети Cloudflare, и активируйте сервер ключей, чтобы обеспечить взаимную аутентификацию.
Установить
Эти же шаги приведены на репозиторий пакетов Cloudflare ↗.
Пакеты Debian/Ubuntu
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless trixie main' | sudo tee /etc/apt/sources.list.d/cloudflare.list
sudo apt-get update && sudo apt-get install gokeylesssudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless bookworm main' | sudo tee /etc/apt/sources.list.d/cloudflare.list
sudo apt-get update && sudo apt-get install gokeylesssudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless bullseye main' | sudo tee /etc/apt/sources.list.d/cloudflare.list
sudo apt-get update && sudo apt-get install gokeylesssudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless noble main' | sudo tee /etc/apt/sources.list.d/cloudflare.list
sudo apt-get update && sudo apt-get install gokeylesssudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless jammy main' | sudo tee /etc/apt/sources.list.d/cloudflare.list
sudo apt-get update && sudo apt-get install gokeylesssudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/gokeyless focal main' | sudo tee /etc/apt/sources.list.d/cloudflare.list
sudo apt-get update && sudo apt-get install gokeylessПакеты для RHEL/CentOS/Amazon Linux
Gokeyless использует CGO для поддержки PKCS#11/HSM, что создаёт зависимости от glibc. Используйте репозиторий, соответствующий вашему дистрибутиву.
sudo dnf config-manager --add-repo https://pkg.cloudflare.com/gokeyless/rpm/gokeyless.repo
sudo dnf install gokeylesscurl -fsSl https://pkg.cloudflare.com/gokeyless/rpm/gokeyless.repo | sudo tee /etc/yum.repos.d/gokeyless.repo
sudo yum update
sudo yum install gokeylesssudo dnf config-manager --add-repo https://pkg.cloudflare.com/gokeyless/rpm-el8/gokeyless.repo
sudo dnf install gokeylesscurl -fsSl https://pkg.cloudflare.com/gokeyless/rpm-el8/gokeyless.repo | sudo tee /etc/yum.repos.d/gokeyless.repo
sudo yum update
sudo yum install gokeylessНастройте
Добавьте данные вашего аккаунта Cloudflare в файл конфигурации, расположенный по адресу /etc/keyless/gokeyless.yaml:
-
Укажите имя хоста сервера ключей, например,
keyserver.keyless.example.com. Это также значение, которое вы указали при загрузке keyless-сертификата, и имя хоста вашего сервера ключей, на котором хранится ключ для этого сертификата. -
Укажите Zone ID (его можно найти на Обзор вкладке панели управления Cloudflare).
-
Укажите учётные данные для аутентификации при выпуске сертификата сервера. gokeyless поддерживает два варианта:
-
API-токен (рекомендуется): Создание API-токена на Zone > SSL and Certificates > Edit разрешение. Задайте его в своей конфигурации:
api_token: "<YOUR_API_TOKEN>"Либо используйте переменную окружения
KEYLESS_API_TOKEN. -
Ключ API Origin CA (устаревший): Укажите ключ API Origin CA. Этот параметр перестанет работать 30 сентября 2026 года.
-
Заполнение ключей
Установите свои закрытые ключи в /etc/keyless/keys/ и установите пользователя и группу keyless с правами доступа 400. Ключи должны быть в формате PEM или DER и иметь расширение .key:
ls -l /etc/keyless/keys-r-------- 1 keyless keyless 1675 Nov 18 16:44 example.com.keyПри использовании нескольких серверов ключей убедитесь, что все необходимые ключи распределены на каждый сервер ключей. Обычно клиенты либо используют инструмент управления конфигурацией, например Salt или Puppet, для распределения ключей, либо подключают /etc/keyless/keys в сетевое расположение, доступное только вашим серверам ключей. Ключи считываются в память при загрузке, поэтому сетевой путь должен быть доступен во время запуска или перезапуска процесса gokeyless.
Активировать
Чтобы активировать, перезапустите свой keyless-экземпляр:
- systemd:
sudo service gokeyless restart - upstart/sysvinit:
sudo /etc/init.d/gokeyless restart
Если эта команда завершается ошибкой, попробуйте устранить неполадку, выполнив проверка журналов.