我正在尝试进行相互认证... 我当前的问题是无法使用该域...好像云弹未转发我的证书。
基本上,如果我直接去IP可以正常工作:
$ curl -k -E clientkey.pem https://18.228.142.39:8443/logged_info
(这很好)
$ curl -E clientkey.pem https://xxx.mysite.com:8443/logged_info
(我得到525:SSL握手失败)
我已启用ssl调试器,并且证书从未到达该服务。
我调用域时的一些SSL日志:
upcoming handshake states: server finished[20]
*** Certificate chain
https-jsse-nio-8443-exec-2, fatal error: 42: null cert chain
javax.net.ssl.SSLHandshakeException: null cert chain
%% Invalidated: [Session-1, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]
https-jsse-nio-8443-exec-2, SEND TLSv1.2 ALERT: fatal, description = bad_certificate
https-jsse-nio-8443-exec-2, WRITE: TLSv1.2 Alert, length = 2
https-jsse-nio-8443-exec-2, fatal: engine already closed. Rethrowing javax.net.ssl.SSLHandshakeException: null cert chain
https-jsse-nio-8443-exec-2, called closeOutbound()
https-jsse-nio-8443-exec-2, closeOutboundInternal()
可能缺少一些启用功能吗?
答案 0 :(得分:0)
我认为cloudflare正在终止TLS连接,然后启动到您的源的新连接,因此它(据我所知)不能仅通过代理代理证书,因为它从未看到客户端上的私钥。根据{{3}}和this的显示,如果您是企业客户,则可以将根CA提供给cloudflare,并且他们将根据该CA验证客户端的身份。第一篇文章还建议您打开“ Authenticated Origin Pulls”,这将确保只有cloudflare可以直接与您的原始服务器对话。
第二个链接还显示:
对于使用客户端证书进行标识的公司,Cloudflare还可以将客户端证书的任何字段作为自定义标头转发。
这表示您可以将密钥中的字段转发到您的来源,以便您的来源可以知道请求的来源。