← Cloudflare SSL/TLS / ssl / client-certificates
Устранение неполадок
Если запрос по-прежнему возвращает ошибку после настройки и встраивания клиентского SSL-сертификата, проверьте следующие параметры.
Проверка SSL/TLS-рукопожатия
В терминале выполните следующую команду, чтобы проверить, удаётся ли установить SSL/TLS-соединение между клиентом и конечной точкой API.
curl --verbose --cert /path/to/certificate.pem --key /path/to/key.pem https://your-api-endpoint.comЕсли рукопожатие SSL/TLS не удается завершить, проверьте правильность сертификата и закрытого ключа. Если рукопожатие завершается, но запросы по-прежнему блокируются, убедитесь, что Cloudflare проверяет клиентский сертификат.
Проверьте хосты mTLS
Проверьте, mTLS был включён для правильного хоста. Хост должен совпадать с конечной точкой API, которую вы хотите защитить.
Просмотр правил mTLS
Чтобы просмотреть правила mTLS, выполните указанные ниже действия. Дополнительные сведения см. в Custom rules.
-
На панели управления Cloudflare перейдите к разделу Правила безопасности страницу.
Перейдите в Правила безопасности ↗ -
Для конкретного правила выберите Изменить.
-
В этом правиле проверьте следующее:
-
Expression Preview корректен.
-
Если имя хоста задано, оно совпадает с вашей конечной точкой API. Например, для конечной точки API
api.trackers.ninja/time, правило должно выглядеть так:(http.host in {"api.trackers.ninja"} and not cf.tls_client_auth.cert_verified)
-
-
Чтобы изменить правило, воспользуйтесь пользовательским интерфейсом либо выберите Edit expression.
Расширенная отладка
Вы можете использовать Cloudflare Workers для отладки сбоев проверки клиентских сертификатов.
-
Создайте Worker для отладочной печати cf.properties:
export default { async fetch(request, env, ctx) { console.info({ message: JSON.stringify(request.cf, null, 2) }); return new Response(JSON.stringify(request.cf, null, 2)) } }; -
Привяжите Worker к имени хоста, для которого включён mTLS, с помощью маршрут Worker или Custom Domain.
-
Отправляйте запросы на настроенный хост и/или путь как с отправкой клиентского сертификата mTLS, так и без нее.
-
Просмотрите журналы в Observability панели управления и сравните ответы с ожидаемыми значениями, указанными ниже.
Перейдите в Observability ↗
-
Действительный сертификат
"tlsClientAuth": { "certPresented": "1", "certVerified": "SUCCESS", }, -
Недействительный сертификат (например, самоподписанные сертификаты)
"tlsClientAuth": { "certPresented": "1", "certVerified": "FAILED:self signed certificate", }, -
Нет сертификата
"tlsClientAuth": { "certPresented": "0", "certVerified": "NONE", },