无法从Web应用程序访问Azure公共和私有证书
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法从Web应用程序访问Azure公共和私有证书相关的知识,希望对你有一定的参考价值。
我从第三方公司获取数据,他们给了我证书,以便我可以访问他们的服务。在本地设置它时,它在将.cer和.pfx安装到我的证书库之后起作用。但是,当代码在我的Azure Web App上运行时,我无法使其工作,这会导致错误:
Could not establish trust relationship for the SSL/TLS secure channel with authority
在我的应用程序池访问公共根证书(IIS AppPool AppPoolName)之前,我首先在本地收到此特定错误。感觉我现在在Azure上遇到了同样的错误。代码肯定会找到证书(否则会抛出错误),但它似乎无权使用它们。
我已按照本指南在我的网络应用程序中安装证书:https://azure.microsoft.com/en-us/blog/using-certificates-in-azure-websites-applications/
这是我用来加载私有证书的代码:
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var certs = store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false);
if (certs == null || certs.Count == 0)
{
ExceptionUtils.ThrowDataError("Private certificate could not be found");
}
store.Close();
return certs[0];
我也尝试将.pfx添加到App_Data文件夹并加载它如下:
var certPath = HttpContext.Current.Server.MapPath("~/App_Data/cert.pfx");
var bankIdCert = new X509Certificate2(certPath, "password");
但它会导致同样的错误。也许这意味着它没有获得公共证书的访问权限?工作本地版本和azure版本之间唯一的区别是:
- 在本地,公共证书在商店LocalMachine位置根和私人在商店LocalMachine位置我的
- 在上载时,Azure上的两个证书都转到CurrentUserMy
是否需要在本地计算机上使用某些证书才能工作?
如果第三方CA尚未受信任,则可能会发生此错误。如果您的Web应用程序为您提供证书验证错误,您可以尝试使用自签名证书:https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-custom-ssl。
无法为具有权限的SSL / TLS安全通道建立信任关系
在您的情况下,SSL证书验证失败的最主要原因是:
URL中使用的主机名与证书上的名称不匹配。确保您使用的URL和证书的“颁发给”字段上的URL相同。
正如Swikruti Bose所说,你可以关注Bind an existing custom SSL来定制SSL。
由于azure WebApp是sandbox,因此我们无权在Azure WebApp中安装Root CA.
如果可以使用Azure虚拟机或Cloud Service,您还可以使用Azure虚拟机或cloud Service。
以上是关于无法从Web应用程序访问Azure公共和私有证书的主要内容,如果未能解决你的问题,请参考以下文章
Azure 无法访问证书 PrivateKey“指定的提供程序类型无效”
由于证书不受信任,无法从 Azure SF 连接到外部 https