我遇到了以下问题:浏览器向服务器发送 CORS 请求 - 该服务器需要客户端 SSL/TLS 身份验证(因此服务器和客户端都应交换其证书)。服务器与加载到客户端的页面位于不同的域中 - 因此它需要 CORS 请求。
问题 1:IE11 使用双向 SSL/TLS 认证中止预检请求
解决方案 1:使请求“本地”并设置一个 apache 代理(使用 RewriteRule - 但它没有通过客户端的证书,然后使用代理传递 - 但它也没有通过客户端的证书)。
问题 2:客户端的证书未通过重写规则和代理通过。
问题:有没有什么办法可以通过 apache 代理传递客户端的证书?(完全不改变服务器的 API)。
附言:我读过很多这样的帖子 -Apache SSL Proxy 找不到客户端证书?但我没有找到任何解决方案(并且像这样的线程已经很旧了)。
答案1
如果您有一个使用带有客户端证书的 https 的服务器,那么您就不能将普通的应用程序协议级代理放在它前面,您能做的最好的就是 TCP 插件或端口重定向。
当应用服务器需要 TLS 中私钥所有权的证据时,它不会满足于 HTTP 标头中的证书。客户端和服务器之间需要进行 TLS 握手。