SSL 握手期间未提供客户端证书



我想问解释一下。我正在使用X.509 certificate,当我尝试将数据发布到我要与之通信的webservice时,出现以下错误:"

SSL 握手期间未提供客户端证书

你能解释一下问题是什么吗?

注意:我正在使用.NET Framework 3.5 / C#

我所做的是:首先我将证书导入存储,然后我使用下面的代码来找到它,然后接收令牌(使用 AskForToken 函数)。但是,当我发送数据时,握手失败。

的第一个问题是为什么我成功获得令牌(如果我没记错的话,客户端(这是我的应用程序)将证书发送到服务器并获得了令牌,这意味着连接已经完成得很好)?

我的第二个问题,我必须更改或检查什么才能摆脱这种握手失败。

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;
        }

SSL 有可能要求客户端身份验证。因此,在建立连接之前,客户端(您的应用程序)必须发送服务器信任的证书。此客户端身份验证似乎失败,因为您的应用程序未发送此类证书。

根据您尝试使用的Web服务,将无法创建此类证书,因为服务器仅信任来自某个公司的应用程序。

在SSL握手期间,客户端将其公钥提供给另一方,这显然没有发生。

我不是 C# 程序员,所以我无法为您提供代码。但是您需要创建一个SSL密钥对(私钥+公钥对)并使用它来定义SSL套接字等。

相关内容

  • 没有找到相关文章

最新更新