我们使用为我们提供两个证书的第三方:一个带有公钥和私钥的证书,另一个只带有公钥的第一个签名。
每个请求都应该使用第一个公钥/私钥证书:
if (ClientCertificate != null)
{
request.ClientCertificates.Add(ClientCertificate);
}
在第三方doc中,我们应该将第二个证书(带有公钥)放到Trusted Root。在这种情况下,一切都很好。
但是,如果第二个证书不在受信任的根目录中(仅限个人)第三方服务器(基于IIS)返回
HTTP Error 403.7 - Forbidden
The page you are attempting to access requires your browser to have a Secure Sockets Layer (SSL) client certificate that the Web server recognizes.
我们如何避免将第二个证书放置到受信任的根?我们在Azure中进行了生产,但未提供受信任的根证书颁发机构。
在构造请求期间推送来自Personal / Trusted Root的证书时,.Net HttpWebRequest可能存在差异吗?
答案 0 :(得分:0)
从已经在每个人的受信任根目录中的供应商处购买您的证书可以解决此问题。这些收费更多,但他们可以,因为他们已经安装。
答案 1 :(得分:0)
我们使用Azure Web App进行制作。 Azure支持部门回答说,没有任何解决方案可以将客户端证书放置到受信任的根。可能在将来。作为解决方法,我们实现了代理服务,该服务适用于虚拟机并代理每个对第三方的请求