c #ssl请求 - 证书验证

时间:2011-10-19 16:41:23

标签: c# ssl https nginx x509certificate

我正在为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.

欢迎任何帮助!谢谢, 克里斯

2 个答案:

答案 0 :(得分:0)

您需要在服务器上安装客户端证书,并将服务器配置为信任它。我没有使用nginx的经验,所以我无法帮助你解决方法,但你需要将客户端证书放入服务器的可信证书库。

答案 1 :(得分:0)

解决了:ssl_verify_depth 1;需要......