INTEGRITY Документация

Публичный DNS

Если вы не можете использовать Настройка Cloudflare Tunnel, вы также можете создать публичную DNS-запись для своего сервера ключей.

Такой вариант настройки не идеален, так как запись DNS нельзя проксируется и, как следствие, раскроет настоящий IP-адрес вашего сервера ключей.


Перед началом работы

Поддерживаемые платформы

Keyless прошел тестирование на amd64 и arm архитектур. Бинарный файл сервера ключей, скорее всего, будет работать на всех архитектурах, поддерживаемых Go. Поддержка в коде может существовать и для других процессоров, но такие архитектуры не тестировались.

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

Поддерживаемые операционные системы

Для запуска Keyless нужна поддерживаемая операционная система (ОС). Поддерживаемые операционные системы:

Настоятельно рекомендуем использовать операционную систему, которая всё ещё поддерживается производителем (то есть получает обновления безопасности), поскольку ваш сервер ключей будет иметь доступ к вашим закрытым ключам.


1. Создание общедоступной DNS-записи

  1. Откройте терминал и выполните openssl rand -hex 24 чтобы сгенерировать длинное случайное имя хоста, например 11aa40b4a5db06d4889e48e2f738950ddfa50b7349d09b5f.example.com.
  2. Добавьте эту запись через интерфейс вашего DNS-провайдера как A или AAAA запись, указывающую на IP-адрес вашего сервера Keyless SSL.
  3. Используйте это имя хоста как имя сервера при инициализации сервера Keyless SSL.

Сертификаты, используемые в Keyless SSL

Keyless SSL включает в себя два разных сертификата. Их часто путают между собой. Это самая распространённая ошибка настройки.

Сертификат Что это такое SAN должен содержать
Edge-сертификат (Keyless SSL) Публичный сертификат, который Cloudflare предоставляет для вашего сайта. Только хосты вашего сайта (например, www.example.com)
Сертификат аутентификации сервера ключей Сертификат, с помощью которого ваш сервер ключей подтверждает свою подлинность перед Cloudflare. Только имя хоста сервера ключей

2. Загрузите сертификаты Keyless SSL

Прежде чем настраивать ключевые серверы, необходимо загрузить соответствующие SSL-сертификаты на периферийные серверы Cloudflare. Во время завершения TLS-соединения Cloudflare предъявляет эти сертификаты подключающимся браузерам, а затем (для непродолженных сессий) обращается к указанному ключевому серверу для завершения рукопожатия.

Загружайте в Cloudflare сертификаты только с теми SAN, которые вы хотите использовать с Cloudflare Keyless SSL. Все имена хостов Keyless SSL должны быть проксируется.

Вам нужно будет загрузить каждый сертификат, используемый с Keyless SSL.

Чтобы создать сертификат Keyless в панели управления:

  1. На панели управления Cloudflare перейдите к разделу Edge Certificates страницу.

    Перейдите в Edge Certificates ↗
  2. Выберите Загрузка сертификата Keyless SSL.

  3. Заполните окно загрузки, указав сертификат и другие данные, и выберите Add.

Метка Описание Примеры значений
Метка сервера ключей Любой уникальный идентификатор вашего сервера ключей. “test-keyless”, “production-keyless-1”
Имя хоста сервера ключей Имя хоста вашего сервера ключей, который хранит ключ для этого сертификата (например, случайное имя хоста, сгенерированное ранее). 11aa40b4a5db06d4889e48e2f738950ddfa50b7349d09b5f.example.com
Порт сервера ключей По умолчанию используется значение 2407, если вы не изменили его на сервере ключей. 2407
SSL-сертификат Действительный SSL-сертификат X509v3 (в формате PEM), для которого у вас есть приватный ключ. (байты PEM)
Метод формирования пакета Почти всегда это должно быть Compatible. См. Загрузка пользовательских сертификатов для дополнительных сведений. Compatible

Чтобы создать сертификат Keyless через API, отправьте POST запрос.


3. Настройте и активируйте сервер ключей

Наконец, установите сервер ключей в своей инфраструктуре, добавьте в него 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 gokeyless
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 bookworm main' | sudo tee /etc/apt/sources.list.d/cloudflare.list

sudo apt-get update && sudo apt-get install gokeyless
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 bullseye main' | sudo tee /etc/apt/sources.list.d/cloudflare.list

sudo apt-get update && sudo apt-get install gokeyless
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 noble main' | sudo tee /etc/apt/sources.list.d/cloudflare.list

sudo apt-get update && sudo apt-get install gokeyless
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 jammy main' | sudo tee /etc/apt/sources.list.d/cloudflare.list

sudo apt-get update && sudo apt-get install gokeyless
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 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 gokeyless
curl -fsSl https://pkg.cloudflare.com/gokeyless/rpm/gokeyless.repo | sudo tee /etc/yum.repos.d/gokeyless.repo
sudo yum update
sudo yum install gokeyless
sudo dnf config-manager --add-repo https://pkg.cloudflare.com/gokeyless/rpm-el8/gokeyless.repo
sudo dnf install gokeyless
curl -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:

  1. Укажите имя хоста сервера ключей, например, 11aa40b4a5db06d4889e48e2f.example.com. Это также значение, которое вы указали при загрузке keyless-сертификата, и имя хоста вашего сервера ключей, на котором хранится ключ для этого сертификата.

  2. Укажите Zone ID (его можно найти на Обзор вкладке панели управления Cloudflare).

  3. Укажите учётные данные для аутентификации при выпуске сертификата сервера. 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-экземпляр:

Если эта команда завершается ошибкой, попробуйте устранить неполадку, выполнив проверка журналов.

Разрешить входящие подключения от Cloudflare

Во время TLS-рукопожатий клиент Keyless SSL от Cloudflare устанавливает соединения с именем хоста или IP-адресом сервера ключей, указанным при загрузке сертификата. По умолчанию клиент Keyless SSL использует TCP-порт назначения 2407, но это значение можно изменить при загрузке сертификата или позже, отредактировав его данные.

Создайте пользовательские правила WAF, которые разрешают вашему ключевому серверу принимать подключения только от Cloudflare. IPv4 и IPv6 адреса Cloudflare можно получить через Конечная точка API сведений об IP.