我正在为HTTPS请求添加自签名X509证书。
request.ClientCertificates.Add(new X509Certificate(@"key.pfx", ""));
正在与nginx交谈,其中包括:
ssl_verify_client on;
由于它是自签名的,我在证书签名链上收到错误。所以我告诉c#忽略它。 (执行lambda并返回true)
ServicePointManager.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;
然而,我从nginx收到以下错误。
400 Bad Request
No required SSL certificate was sent
nginx/1.0.5
任何人都可以解释为什么会发生这种情况吗?或者我如何追查原因?
我当前的想法:证书已从http客户端删除,因为它是自签名的?
另外:来自c#
的一些诊断输出Step into: Stepping over method without symbols 'System.Net.Security.SecureChannel.VerifyRemoteCertificate'
System.Net Information: 0 : [5516] SecureChannel#31534420 - Remote certificate has errors:
System.Net Information: 0 : [5516] SecureChannel#31534420 - A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
System.Net Information: 0 : [5516] SecureChannel#31534420 - Remote certificate was verified as valid by the user.
欢迎任何帮助!谢谢, 克里斯
答案 0 :(得分:0)
您需要在服务器上安装客户端证书,并将服务器配置为信任它。我没有使用nginx的经验,所以我无法帮助你解决方法,但你需要将客户端证书放入服务器的可信证书库。
答案 1 :(得分:0)
解决了:ssl_verify_depth 1;
需要......