调用Web服务时,ClientCertifcates在请求中为空

时间:2016-10-06 12:22:21

标签: c# .net ssl-certificate client-certificates

证书适用于我在localhost上的开发机器。

调用ASMX Web服务时,我的客户端证书在Web服务的接收端为空。事先通过其指纹找到客户端证书并成功添加到请求中。

X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);

X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindByThumbprint, _CertificateThumbprint,true);

因此我通过X509Chain.ChainElements调用了verify方法,它返回false,我可以调试,我看到RevocationStatusUnknown的状态。

RevocationStatusUnknown debug status

然后我尝试通过下面的代码构建其链策略,但接收端仍然缺少证书。

 X509Chain ch = new X509Chain();

 X509Chain chain = new X509Chain();
 X509ChainPolicy chainPolicy = new X509ChainPolicy()
 {
     RevocationMode = X509RevocationMode.NoCheck,
     RevocationFlag = X509RevocationFlag.EntireChain,
     VerificationFlags =  X509VerificationFlags.NoFlag
 };
 chain.ChainPolicy = chainPolicy;
 chain.Build(certs[0]);

在认证文件本身上,我在命令行中运行以下命令..

certutil  -f -urlfetch -verify SWIMTRAM.cer 

我收到以下信息..

 Element.dwInfoStatus = CERT_TRUST_HAS_EXACT_MATCH_ISSUER (0x1)
 Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
 Element.dwErrorStatus = CERT_TRUST_REVOCATION_STATUS_UNKNOWN (0x40)

Cannot check leaf certificate revocation status

CERT_TRUST_REVOCATION_STATUS_UNKNOWN

注意: 我尝试通过fiddler调试请求,fiddler2应用程序本身提示我将证书保存到C:\ Users \\ Documents \ Fiddler2。 执行此操作后,服务现在可以通过Web浏览器工作,但仅在fiddler2运行时才能运行。

0 个答案:

没有答案