0

让我解释一下我的情况。

我创建了一个自签名证书并将其安装在 MMC的受信任的根证书颁发机构部分。

然后我使用自签名证书创建了两个证书:

  1. 具有主题名称“localhost”的证书
  2. 主题名称为“test.com”的证书

然后我将这两个证书都安装到了MMC 的个人证书部分。

然后,我在 IIS 中将 Web 服务部署为 HTTPS(带有接受客户端证书的 SSL)。用于部署 Web 服务的证书是主题名称为“localhost”的证书。

现在,我有一个想要连接到 Web 服务的客户。我成功地添加了对该服务的 Web 引用。这是代码:

            ClientServices web_service = new ClientServices();
            X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
            store.Open(OpenFlags.ReadOnly);
            X509Certificate2Collection col = store.Certificates.Find(X509FindType.FindBySubjectName, "test.com", true);

            if (col.Count == 1)
            {
                ServicePointManager.Expect100Continue = true;
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;
                web_service.ClientCertificates.Add(col[0]);

                try
                {
                    string hello = web_service.HelloWorld();
                    int add = web_service.add(4, 31);
                    int sub = web_service.subtract(30, 10);

                    Console.WriteLine(hello);
                    Console.WriteLine(add);
                    Console.WriteLine(sub);
                }
                catch (WebException e)
                {
                    Console.WriteLine(e.Message.ToString());
                }
            }

            else
            {
                Console.WriteLine("The certificate was not found!");
            }
            Console.ReadKey();

如您所见,我将“test.com”证书与 Web 服务请求一起发送。不幸的是,我得到了这个例外:

The request was aborted: Could not create SSL/TLS secure channel

我怎么解决这个问题?我已经在这个问题上浪费了 3 个小时。请帮我。

4

1 回答 1

2
private void Somewhere() {
    ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AllwaysGoodCertificate);
}

private static bool AllwaysGoodCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors) {
   return true;
}

来源: 请求被中止:无法创建 SSL/TLS 安全通道

于 2013-04-25T18:25:50.470 回答