SSL连接问题-无法使用权​​限建立SSL / TLS的安全通道

时间:2018-07-13 23:18:23

标签: vb.net ssl windows-server-2008-r2

我们的一位客户公开了一项具有自签名证书保护的服务。

我将该证书安装在本地计算机的“个人证书”和“受信任的根证书颁发机构”下。我编写了一个测试控制台应用程序来连接它。当我在管理模式下运行Visual Studio时,它起作用了。当我在没有管理员模式的情况下运行它时,出现以下错误:

Could not establish secure channel for SSL/TLS with authority 'www.theirhostname.com'.

我将相同的代码复制到Web应用程序中,并将应用程序池的标识更改为LocalSystem,并成功连接。使用ApplicationPoolIdentity时遇到了同样的错误。

现在,我使用在本地PC上以管理模式运行Visual Studio时所用的相同代码,并将其复制到Windows Server 2008 R2上IIS托管的网站中。当网站尝试连接到同一服务时,出现错误消息:

Could not establish secure channel for SSL/TLS with authority 'www.theirhostname.com'.

为解决此问题,我尝试更改网站在服务器上运行的应用程序池的服务帐户。这些帐户均无效:

LocalService
LocalSystem
NetworkService
ApplicationPoolIdentity

这是设置获取证书的代码段,该证书可以在控制台应用程序以及本地IIS上的Windows应用程序中的Windows 10框中使用。

Public Class ServiceCall

    Private _binding As BasicHttpBinding
    Private _endPoint As EndpointAddress


    Public Sub New()
        _binding = New BasicHttpBinding()
        _binding.Security.Mode = BasicHttpSecurityMode.Transport
        _binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate

    End Sub


    Public Sub Connect() 


        _endPoint = New EndpointAddress("https://www.theirhostname.com/WebServices/Test") 

        Dim client As New TestServiceClient(_binding, _endPoint)
        client.ClientCredentials.ClientCertificate.SetCertificate(
                StoreLocation.LocalMachine,
                StoreName.My,
                X509FindType.FindBySubjectName,
                "ServiceEndPoint- Testing")

本地PC上的控制台应用程序和Web应用程序中的所有设置和代码都与服务器上Web应用程序中的设置相匹配。控制台应用程序在服务器上运行时,还可以使用服务器上安装的同一证书连接到服务。 IIS本地主机上托管的同一Web应用程序也可以连接到第三方服务。无法在服务器上的IIS上托管相同的网站应用程序。请帮忙。

0 个答案:

没有答案