Web Services 无法创建SSL/TLS安全通道-问题是否出在代理服务器上?

34gzjxbg  于 2022-11-15  发布在  其他
关注(0)|答案(5)|浏览(211)

我有一个C#应用程序,它调用一个使用证书进行身份验证的Web服务方法。代码可以工作,因为当它安装在服务器A(没有代理)上时,它会进行身份验证。
当我在服务器B上安装代码时,在客户端站点,它安装在一个代理后面。我真的尝试了几乎所有的方法,但我总是得到这个错误:
无法创建SSL/TLS安全通道
你认为这个问题可能是由代理服务器引起的吗?如果你有任何个人经验,请分享。
谢谢

7ajki6be

7ajki6be1#

根据我的经验,几乎所有这样的消息都是由于链中的某台机器(客户机、代理、服务器)由于某种原因不“喜欢”证书。
为了详细说明twk所说的内容,如果您使用自签名证书或您自己的CA,您需要至少在服务器上的可信颁发机构存储中安装签名证书,可能还需要在代理上安装。
我遇到的常见问题:

  • 服务器上的证书不是由代理或客户信任的颁发机构签署的
  • CLIENT上的证书不是由PROXY或SERVER信任的颁发机构签署的
  • 糟糕,当我创建要安装在客户端上的证书时,忘记导出私钥
  • 我的进程对客户端上的私钥没有读取权限
  • 客户端证书受密码保护,并且我在阅读证书时未指定凭据。
h9vpoimq

h9vpoimq2#

我遇到了同样的问题。在我的情况下,证书需要网络服务访问。您可以通过
1.打开证书MMC
1.导航到证书(本地计算机)〉个人〉证书
1.右键单击证书,然后从上下文菜单中选择所有任务〉管理私钥...
1.设置适当的权限

68bkxrlz

68bkxrlz3#

如果您的证书不受信任(是自签名的),则C#客户端将拒绝连接。

ktecyv1j

ktecyv1j4#

将以下内容添加到构造函数:

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
jdg4fx2g

jdg4fx2g5#

我的答案与Snakebyte的答案相似,在我的例子中,证书的私钥需要IIS_IUSRS用户访问。
1.打开证书MMC
1.右键单击证书,然后从上下文菜单中选择所有任务〉管理私钥...
1.添加IIS_IUSRS用户并设置适当的权限。

相关问题