【发布时间】:2016-06-15 05:06:07
【问题描述】:
我想请求解释。我正在使用X.509 certificate,当我尝试将我的数据发布到我想与之通信的webservice 时,我收到以下错误:“
在 SSL 握手期间未提供客户端证书
你能解释一下是什么问题吗?
注意:我正在使用.NET Framework 3.5 / C#
我所做的是:首先我将证书导入商店,然后使用下面的代码找到它,然后接收令牌(使用 AskForToken 函数)。但是,当我发送数据时,握手失败。
我的第一个问题是为什么我成功获取token(如果我没记错的话,客户端(也就是我的应用程序)将证书发送到服务器并拿到了token,说明连接已经做好了)?
我的第二个问题,我必须更改或检查什么才能摆脱握手失败。
private static string RequestSecurityToken()
{
WSTrustChannelFactory trustChannelFactory = new Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannelFactory(
new CertificateWSTrustBinding(SecurityMode.TransportWithMessageCredential),
new EndpointAddress(new Uri(stsAddress)));
trustChannelFactory.TrustVersion = TrustVersion.WSTrust13;
string thumb = "fe14593dd66b2406c5269d742d04b6e1ab03adb1";
trustChannelFactory.Credentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindByThumbprint, thumb);
trustChannelFactory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.PeerOrChainTrust;
cert = trustChannelFactory.Credentials.ClientCertificate.Certificate;
var tokenString = AskForToken(serviceURL, trustChannelFactory);
trustChannelFactory.Close();
return tokenString;
}
【问题讨论】:
标签: c# ssl certificate x509 handshake