无法从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/

我已将应用程序属性设置为导入所有证书:enter image description here

这是我用来加载私有证书的代码:

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

无法从连接到 Azure *** 的本地计算机(在家庭网络上)访问专用 AKS 群集

设置 Azure Web App 以接受客户端证书

Azure - 虚拟网络之间的专用链接

无法验证从 Azure AD 获得的访问令牌签名以保护 Web API