Nginx1.9.5(LinuxIIS8.5)nginx:443->>IIS:443+客户端证书验证。
示例位置代理pass,这里还有我尝试过的注释命令。
location ^~ /test/ {
#proxy_buffering off;
#proxy_http_version 1.0;
#proxy_request_buffering off;
#proxy_set_header Connection "Keep-Alive";
#proxy_set_header X-SSL-CERT $ssl_client_cert;
# proxy_ssl_name domain.lv;
#proxy_ssl_trusted_certificate /etc/nginx/ssl/root/CA.pem;
#proxy_ssl_verify_depth 2;
proxy_set_header HOST domain.com;
proxy_ssl_certificate /etc/nginx/ssl/test.pem;
proxy_ssl_certificate_key /etc/nginx/ssl/test_key.pem;
proxy_ssl_verify off;
proxy_pass https://10.2.4.101/;
}在IIS simple。
测试我得到了什么:
错误: Nginx侧:*4622上游超时(110:连接超时),同时从上游IIS端读取响应头: 500 0 64 119971
所以我希望有人能知道为什么?
编辑1.也尝试从不同的服务器使用nginx 1.8,没有任何帮助。
proxy_ssl_verify off;
proxy_ssl_certificate /etc/nginx/ssl/test/test.pem;
proxy_ssl_certificate_key /etc/nginx/ssl/test/test_key.pem;
proxy_pass https://domain.com;2.对Apache2.4进行同样的尝试
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
SSLProxyMachineCertificateFile /etc/httpd/ssl/test.pem
ProxyPass "/test" "https://domain.com"也许在nginx中重新谈判ssl?
发布于 2016-01-10 15:31:14
你对TLS重新谈判的预感是正确的。自0.8.23版本以来,Nginx一直不允许TLS重新协商(参见http://nginx.org/en/CHANGES)。但是,默认情况下,IIS在请求客户端证书时将使用TLS重新协商。(我找不到原因--如果有人能指点我,我将不胜感激!)
您可以使用包嗅探器(如wireshark )查看此操作:
若要解决此问题,必须强制IIS在初始TLS握手时请求客户端证书。您可以使用powershell中的netsh实用程序或命令行来完成此操作:
netshhttpshow sslcert。您应该看到计算机上所有当前SSL绑定的列表:

delete sslcert ipport=[IP:port from above]add sslcert ipport=[IP:port from above] certhash=[certificate hash from above] appid={[any random GUID (can be the same one from the show sslcert output)]} certstorename=MY verifyclientcertrevocation=enable verifyrevocationwithcachedclientcertonly=disable clientcertnegotiation=enableshow sslcert来确认此操作是否有效。您应该会看到一个几乎相同的输出,但是将协商客户证书设置为已启用:

请注意,此方法仅适用于单个证书--如果需要更改或更新证书,则必须再次运行这些步骤。当然,为了便于部署和维护,您应该将它们封装在批处理脚本或MSI安装程序自定义操作中。
https://stackoverflow.com/questions/33333609
复制相似问题