web-dev-qa-db-ja.com

リクエストは中止されました:SSL / TLSセキュアチャネル例外を作成できませんでした

私の状況について説明させてください。

自己署名証明書を作成し、MMCのTrusted Root Certification Authoritiesセクションにインストールしました。

次に、自己署名証明書を使用して2つの証明書を作成しました。

  1. サブジェクト名が「localhost」の証明書
  2. サブジェクト名が「test.com」の証明書

次に、両方の証明書をMMCのPersonal証明書セクションにインストールしました。

次に、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時間を無駄にしました。私を助けてください。

1
Joe Borg
        X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);

LocalMachineストアを使用しています。証明書をmmcの「マシン証明書」にする(昇格したMMC->証明書スナップイン->コンピューターアカウント))か、CurrentUserストアを使用します。

また、C#/プログラミングに関連しているため、これはStackExchangeにとってより良い質問になるかもしれません。

0
Sean Madden