Запрос был прерван: не удалось создать безопасный канал SSL / TLS [дубликат]

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

Я пытаюсь отправить запрос http с сертификатом на стороне клиента. Файл, в данном случае .p12 файл. Однако, когда он достигает линииresponseStream = httpRequest.GetRequestStream(); это вызывает исключение WebException:System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.

Я отлаживаю это в IIS7.5 (в Windows 7), где удостоверение пула приложений - «LocalSystem».

Как мне решить эту проблему?

        System.IO.Stream responseStream = null;
        string errorString = string.Empty;
        ;
        string postData = string.Empty;
        HttpWebRequest httpRequest = null;
        System.Text.Encoding Encoding = new System.Text.UTF8Encoding();
        try
        {
            XmlDocument orderXml = new XmlDocument();
            orderXml.Load(@"c:\xmlfile.xml");
            postData = orderXml.InnerXml;

            byte[] byte1 = Encoding.GetBytes(postData);

            httpRequest = (HttpWebRequest)WebRequest.Create("https://testurl.com/SOAP_v1_0/");
            httpRequest.Method = "POST";
            httpRequest.Timeout = 9000;
            httpRequest.KeepAlive = false;
            httpRequest.ContentType = "text/xml; charset=" + "utf-8";
            httpRequest.ContentLength = byte1.Length;

            X509Certificate2 certificate = new X509Certificate2(@"c:\file.p12", "password", X509KeyStorageFlags.Exportable);
            X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);

            try
            {
                store.Open(OpenFlags.ReadWrite);

                if (!store.Certificates.Contains(certificate))
                {
                    store.Add(certificate);
                }

                int indexOfCertificate = store.Certificates.IndexOf(certificate);
                certificate = store.Certificates[indexOfCertificate];
            }

            finally
            {
                store.Close();
            }

            httpRequest.ClientCertificates.Add(certificate);

            responseStream = httpRequest.GetRequestStream();

            responseStream.Write(byte1, 0, byte1.Length);
        }
        catch (WebException webExcp)
        {
            errorString += "Error message: " + webExcp.Message;

            // Get the WebException status code.
            WebExceptionStatus status = webExcp.Status;

            if (status == WebExceptionStatus.ProtocolError)
            {
                // Get HttpWebResponse so that you can check the HTTP status code.
                HttpWebResponse httpResponse = (HttpWebResponse)webExcp.Response;
                errorString += "; The server returned protocol error " + httpResponse.StatusCode + " - " + httpResponse.StatusCode;
                httpResponse.Close();
            }
        }
        catch (Exception e)
        {
            errorString += "Error message: " + e.Message;
        }
        finally
        {
            if (responseStream != null)
            {
                responseStream.Close();
            }
        }
    }

При работе с журналом трассировки это строки, указывающие на ошибку:

System.Net Information: 0 : [4968] SecureChannel#2399524 - Certificate is of type X509Certificate2 and contains the private key.

System.Net Information: 0 : [4968] AcquireCredentialsHandle(package = Microsoft Unified Security Protocol Provider, intent  = Outbound, scc     = System.Net.SecureCredential)

System.Net Error: 0 : [4968] AcquireCredentialsHandle() failed with error 0X8009030D.

System.Net Information: 0 : [4968] AcquireCredentialsHandle(package = Microsoft Unified Security Protocol Provider, intent  = Outbound, scc     = System.Net.SecureCredential)

System.Net Error: 0 : [4968] AcquireCredentialsHandle() failed with error 0X8009030D.
System.Net.Sockets Verbose: 0 : [4968] Socket#59311937::Dispose()

System.Net Error: 0 : [4968] Exception in the HttpWebRequest#50160154:: - The request was aborted: Could not create SSL/TLS secure channel.

System.Net Error: 0 : [4968] Exception in the HttpWebRequest#50160154::EndGetRequestStream - The request was aborted: Could not create SSL/TLS secure channel.

Ответы на вопрос(1)

Ваш ответ на вопрос