← Cloudflare SSL/TLS / ssl / client-certificates
Řešení potíží
Pokud váš dotaz vrací chybu i po nakonfigurování a vložení klientského certifikátu SSL, zkontrolujte následující nastavení.
Zkontrolujte handshake SSL/TLS
V terminálu pomocí následujícího příkazu zkontrolujte, zda lze mezi klientem a koncovým bodem API úspěšně navázat spojení SSL/TLS.
curl --verbose --cert /path/to/certificate.pem --key /path/to/key.pem https://your-api-endpoint.comPokud se nepodaří dokončit handshake SSL/TLS, zkontrolujte, zda jsou certifikát a soukromý klíč správné. Pokud se handshake dokončí, ale požadavky jsou stále blokovány, ověřte, že Cloudflare ověřuje klientský certifikát.
Zkontrolujte hostitele mTLS
Zkontrolujte, zda mTLS bylo povoleno pro správný hostitel. Hostitel by měl odpovídat koncovému bodu API, který chcete chránit.
Kontrola pravidel mTLS
Chcete-li zkontrolovat pravidla mTLS, postupujte podle kroků níže. Další informace najdete v Custom rules.
-
V dashboardu Cloudflare přejděte na Bezpečnostní pravidla stránce.
Přejděte na Bezpečnostní pravidla ↗ -
U konkrétního pravidla vyberte Úprava.
-
U daného pravidla zkontrolujte, zda:
-
Expression Preview je v pořádku.
-
Hostname, pokud je definován, odpovídá vašemu API endpointu. Například pro API endpoint
api.trackers.ninja/time, pravidlo by mělo vypadat takto:(http.host in {"api.trackers.ninja"} and not cf.tls_client_auth.cert_verified)
-
-
Chcete-li pravidlo upravit, použijte uživatelské rozhraní nebo vyberte Edit expression.
Pokročilé ladění
Můžete použít Cloudflare Workers k ladění selhání ověření klientského certifikátu.
-
Vytvořte Worker pro výpis ladicích informací o 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)) } }; -
Přiřaďte Worker k hostitelskému názvu, kde je povoleno mTLS, pomocí Worker route nebo Custom Domain.
-
Odešlete požadavky na nakonfigurovaný hostname nebo cestu, s odesláním mTLS klientského certifikátu i bez něj.
-
Zobrazte si protokoly na Observabilita dashboardu a porovnejte odpovědi s očekávanými hodnotami uvedenými níže.
Přejděte na Observabilita ↗
-
Platný certifikát
"tlsClientAuth": { "certPresented": "1", "certVerified": "SUCCESS", }, -
Neplatný certifikát (například certifikáty s vlastním podpisem)
"tlsClientAuth": { "certPresented": "1", "certVerified": "FAILED:self signed certificate", }, -
Žádný certifikát
"tlsClientAuth": { "certPresented": "0", "certVerified": "NONE", },