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

Клиентский сертификат

Атрибут состояния устройства Client Certificate проверяет, есть ли у устройства действительный клиентский сертификат, подписанный доверенным сертификатом. Доверенный сертификат загружается в Cloudflare и указывается как часть правила проверки состояния. Проверка состояния по клиентскому сертификату может использоваться в политиках Gateway и Access, чтобы убедиться, что пользователь подключается с управляемого устройства.

Доступность функций

Режимы клиента планы Zero Trust
Все режимы Все тарифы
Система Доступность Минимальная версия клиента1
Windows 2024.6.415.0
macOS 2024.6.416.0
Linux 2024.6.497.0
iOS
Android
ChromeOS

1 Проверки сертификата клиента, выполненные в более ранней версии Cloudflare One Client, продолжат работать. Чтобы настроить новую проверку сертификата, обновите Cloudflare One Client до одной из версий, указанных выше.

Предварительные требования

Настройте проверку клиентского сертификата

  1. Используйте Эндпоинт для загрузки сертификата mTLS чтобы загрузить сертификат и закрытый ключ в Cloudflare. Сертификат должен быть сертификатом для подписи, оформленным в виде единой строки с \n заменив переносы строк. Приватный ключ требуется только в том случае, если вы используете этот пользовательский сертификат для проверки HTTPS в Gateway.

    Необходимые разрешения API-токена

    Хотя бы одно из следующих права доступа токена требуется:
    • Account: SSL and Certificates Write
    Загрузите сертификат mTLS
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/mtls_certificates" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"name": "example_ca_cert",
    		"certificates": "-----BEGIN CERTIFICATE-----\nXXXXX\n-----END CERTIFICATE-----",
    		"private_key": "-----BEGIN PRIVATE KEY-----\nXXXXX\n-----END PRIVATE KEY-----",
    		"ca": true
    	}'

    Ответ вернёт UUID сертификата. Например:

    {
      "success": true,
      "errors": [],
      "messages": [],
      "result": {
        "id": "2458ce5a-0c35-4c7f-82c7-8e9487d3ff60",
        "name": "example_ca_cert",
        "issuer": "O=Example Inc.,L=California,ST=San Francisco,C=US",
        "signature": "SHA256WithRSA",
        ...
      }
    }
  2. В Панель управления Cloudflare, перейдите в Zero Trust > Многократно используемые компоненты > Проверки состояния.

  3. Перейдите в Проверки Cloudflare One Client и выберите Добавьте проверку.

  4. Выберите Клиентский сертификат.

  5. Вам будет предложено указать следующие сведения:

    1. Название: Введите уникальное имя для этой проверки состояния устройства.

    2. Операционная система: Выберите свою операционную систему.

    3. Местоположения ОС: Укажите место (места), где установлен клиентский сертификат.

      Windows

      • Локальное хранилище доверенных сертификатов компьютера
      • Пользовательское хранилище доверенных сертификатов

      macOS

      • System keychain

      Linux

      • NSSDB (/etc/pki/nssdb) - Чтобы выполнить поиск в пользовательском расположении, введите абсолютный путь к файлу(ам) сертификата и закрытого ключа (например /usr/local/mycompany/certs/client.pem и /usr/local/mycompany/certs/client_key.pem). Сертификат и приватный ключ должны быть в PEM формате. Они могут находиться либо в двух разных файлах, либо в одном файле.
    4. ID сертификата: Введите UUID сертификата подписи.

    5. Общее имя: (Необязательно) Чтобы проверить наличие общего имени (CN) в клиентском сертификате, введите строку с необязательными ${serial_number} и ${hostname} переменные (например, ${serial_number}_mycompany). Cloudflare One Client будет искать точное совпадение без учета регистра. Если вы не укажете общее имя, Cloudflare One Client проигнорирует поле общего имени в сертификате.

    6. Проверить наличие Extended Key Usage: (Необязательно) Проверьте, установлены ли у клиентского сертификата один или несколько атрибутов. Поддерживаемые значения: Аутентификация клиента (1.3.6.1.5.5.7.3.2) и/или Электронная почта (1.3.6.1.5.5.7.3.4).

    7. Проверить закрытый ключ: (Рекомендуется) Если этот параметр включён, WARP проверяет, что у устройства есть закрытый ключ, связанный с клиентским сертификатом.

    8. Subject Alternative Name: (Необязательно) Чтобы проверить наличие альтернативного имени субъекта (SAN) в клиентском сертификате, введите строку с необязательными ${serial_number} и ${hostname} переменные (например, ${serial_number}_mycompany). Cloudflare One Client будет искать точное совпадение без учета регистра. Вы можете добавить в проверку состояния устройства несколько SAN: сертификату достаточно совпасть хотя бы с одним SAN, чтобы проверка прошла успешно.

  6. Выберите Save.

Далее перейдите в Insights > Журналы > Журналы состояния и убедитесь, что проверка клиентского сертификата возвращает ожидаемые результаты.

Устранение неполадок

С помощью следующих команд можно проверить, правильно ли клиентский сертификат установлен на устройстве и является ли он доверенным.

  1. Откройте окно PowerShell.
  2. Чтобы найти в хранилище доверенных сертификатов локального компьютера сертификат с указанным common name, выполните следующую команду:
Get-ChildItem Cert:\LocalMachine\My\ | where{$_.Subject -like "*<COMMON_NAME>*"}
  1. Чтобы найти в пользовательском хранилище доверенных сертификатов сертификат с указанным common name, выполните следующую команду:
Get-ChildItem Cert:\CurrentUser\My\ | where{$_.Subject -like "*<COMMON_NAME>*"}
  1. Откройте Terminal.
  2. Чтобы найти в System Keychain сертификат с указанным common name, выполните следующую команду:
/usr/bin/security find-certificate -c "<COMMON_NAME>" -p /Library/Keychains/System.keychain
  1. Откройте Terminal.
  2. Чтобы вывести список всех клиентских сертификатов в NSSDB, выполните следующую команду:
certutil -L -d /etc/pki/nssdb
Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

meow                                                         CTu,Cu,Cu
noPrivateKey                                                 CT,,
  1. Откройте нужный сертификат по его certificate nickname. Common name будет отображаться в строке Subject: "CN=123456.mycompany".
certutil -L -d /etc/pki/nssdb -n meow
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 236 (0xec)
        Signature Algorithm: PKCS #1 SHA-256 With RSA Encryption
        Issuer: "CN=123456.mycompany"
        Validity:
            Not Before: Tue Jul 02 17:20:40 2024
            Not After : Sun Jul 02 17:20:40 2034
        Subject: "CN=123456.mycompany"
        Subject Public Key Info:
            Public Key Algorithm: PKCS #1 RSA Encryption
            RSA Public Key:
                Modulus:
                    <redacted>
                Exponent: 65537 (0x10001)
    Signature Algorithm: PKCS #1 SHA-256 With RSA Encryption
    Signature:
        <redacted>
    Fingerprint (SHA-256):
        <redacted>
    Fingerprint (SHA1):
        <redacted>

    Mozilla-CA-Policy: false (attribute missing)
    Certificate Trust Flags:
        SSL Flags:
            Valid CA
            Trusted CA
            User
            Trusted Client CA
        Email Flags:
            Valid CA
            Trusted CA
            User
        Object Signing Flags:
            Valid CA
            Trusted CA
            User

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