← Cloudflare One / cloudflare-one / reusable-components / posture-checks / client-checks
Клиентский сертификат
Атрибут состояния устройства 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 до одной из версий, указанных выше.
Предварительные требования
-
Центр сертификации (CA), который выдает клиентские сертификаты для ваших устройств. Cloudflare One Client не проверяет цепочку доверия сертификата, поэтому здесь требуется указать именно тот сертификат ЦС, которым был выдан клиентский сертификат.
-
Cloudflare One Client представляет собой развёрнут на устройстве.
-
Клиентский сертификат представляет собой установлен и является доверенным на устройстве.
Настройте проверку клиентского сертификата
-
Используйте Эндпоинт для загрузки сертификата mTLS чтобы загрузить сертификат и закрытый ключ в Cloudflare. Сертификат должен быть сертификатом для подписи, оформленным в виде единой строки с
\nзаменив переносы строк. Приватный ключ требуется только в том случае, если вы используете этот пользовательский сертификат для проверки HTTPS в Gateway.
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Account: SSL and Certificates Write
Загрузите сертификат mTLScurl "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", ... } } -
В Панель управления Cloudflare ↗, перейдите в Zero Trust > Многократно используемые компоненты > Проверки состояния.
-
Перейдите в Проверки Cloudflare One Client и выберите Добавьте проверку.
-
Выберите Клиентский сертификат.
-
Вам будет предложено указать следующие сведения:
-
Название: Введите уникальное имя для этой проверки состояния устройства.
-
Операционная система: Выберите свою операционную систему.
-
Местоположения ОС: Укажите место (места), где установлен клиентский сертификат.
Windows
- Локальное хранилище доверенных сертификатов компьютера
- Пользовательское хранилище доверенных сертификатов
macOS
- System keychain
Linux
- NSSDB (
/etc/pki/nssdb) - Чтобы выполнить поиск в пользовательском расположении, введите абсолютный путь к файлу(ам) сертификата и закрытого ключа (например/usr/local/mycompany/certs/client.pemи/usr/local/mycompany/certs/client_key.pem). Сертификат и приватный ключ должны быть вPEMформате. Они могут находиться либо в двух разных файлах, либо в одном файле.
-
ID сертификата: Введите UUID сертификата подписи.
-
Общее имя: (Необязательно) Чтобы проверить наличие общего имени (CN) в клиентском сертификате, введите строку с необязательными
${serial_number}и${hostname}переменные (например,${serial_number}_mycompany). Cloudflare One Client будет искать точное совпадение без учета регистра. Если вы не укажете общее имя, Cloudflare One Client проигнорирует поле общего имени в сертификате. -
Проверить наличие Extended Key Usage: (Необязательно) Проверьте, установлены ли у клиентского сертификата один или несколько атрибутов. Поддерживаемые значения: Аутентификация клиента (
1.3.6.1.5.5.7.3.2) и/или Электронная почта (1.3.6.1.5.5.7.3.4). -
Проверить закрытый ключ: (Рекомендуется) Если этот параметр включён, WARP проверяет, что у устройства есть закрытый ключ, связанный с клиентским сертификатом.
-
Subject Alternative Name: (Необязательно) Чтобы проверить наличие альтернативного имени субъекта (SAN) в клиентском сертификате, введите строку с необязательными
${serial_number}и${hostname}переменные (например,${serial_number}_mycompany). Cloudflare One Client будет искать точное совпадение без учета регистра. Вы можете добавить в проверку состояния устройства несколько SAN: сертификату достаточно совпасть хотя бы с одним SAN, чтобы проверка прошла успешно.
-
-
Выберите Save.
Далее перейдите в Insights > Журналы > Журналы состояния и убедитесь, что проверка клиентского сертификата возвращает ожидаемые результаты.
Устранение неполадок
С помощью следующих команд можно проверить, правильно ли клиентский сертификат установлен на устройстве и является ли он доверенным.
- Откройте окно PowerShell.
- Чтобы найти в хранилище доверенных сертификатов локального компьютера сертификат с указанным common name, выполните следующую команду:
Get-ChildItem Cert:\LocalMachine\My\ | where{$_.Subject -like "*<COMMON_NAME>*"}- Чтобы найти в пользовательском хранилище доверенных сертификатов сертификат с указанным common name, выполните следующую команду:
Get-ChildItem Cert:\CurrentUser\My\ | where{$_.Subject -like "*<COMMON_NAME>*"}- Откройте Terminal.
- Чтобы найти в System Keychain сертификат с указанным common name, выполните следующую команду:
/usr/bin/security find-certificate -c "<COMMON_NAME>" -p /Library/Keychains/System.keychain- Откройте Terminal.
- Чтобы вывести список всех клиентских сертификатов в NSSDB, выполните следующую команду:
certutil -L -d /etc/pki/nssdbCertificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
meow CTu,Cu,Cu
noPrivateKey CT,,- Откройте нужный сертификат по его certificate nickname. Common name будет отображаться в строке
Subject: "CN=123456.mycompany".
certutil -L -d /etc/pki/nssdb -n meowCertificate:
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Чтобы проверка состояния устройства была пройдена, в выводе команды должен появиться сертификат, прошедший проверку по загруженному сертификату подписи.