Azure 应用服务无法验证 .pfx 文件:证书验证失败,因为无法加载

2024-02-06

多年来,我能够使用 OpenSSL 创建方法在 Azure 应用服务上上传新的 pfx 文件以进行 SSL 绑定这个堆栈溢出答案 https://stackoverflow.com/a/17284371/1399567:

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt

但是,现在执行相同的操作会出现此错误:

至少有一个证书无效(证书验证失败,因为无法加载。)

有哪些方法可以解决这个问题?


应用服务私有证书要求

应用服务私有证书必须满足以下要求 https://learn.microsoft.com/en-us/azure/app-service/configure-ssl-certificate?tabs=apex%2Cportal#private-certificate-requirements:

  • 导出为受密码保护的 PFX 文件,并使用三重 DES 加密。
  • 包含至少 2048 位长的私钥
  • 包含证书链中的所有中间证书和根证书。

选项 1:在 OpenSSL 3+ 中使用旧提供程序

OpenSSL 3+ 不再默认使用 DES 加密。原来的命令需要-legacy and -provider-path(路径到legacy.dll) 附加参数:

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -legacy -provider-path 'C:\Program Files\OpenSSL-Win64\bin'

选项 2:让 Windows 重新加密文件

如果由于某种原因您的 OpenSSL 安装不包含旧提供程序:

打开 PowerShell 并运行此命令,替换-FilePath以及非工作 pfx 文件的路径和密码-String参数及其各自的密码:

Import-PfxCertificate -FilePath "pfx file path" -CertStoreLocation Cert:\LocalMachine\My -Password (ConvertTo-SecureString -String 'MyPassword' -AsPlainText -Force) -Exportable

成功的输出将如下所示:

使用此指纹将证书导出到新的 pfx 文件,替换-Cert, -FilePath,和密码-String论点:

Export-PfxCertificate -Cert Microsoft.PowerShell.Security\Certificate::LocalMachine\My\B56CE9B122FB04E29A974A4D0DB3F6EAC2D150C0 -FilePath 'newPfxName.pfx' -Password (ConvertTo-SecureString -String 'MyPassword' -AsPlainText -Force)

Azure 现在应该能够验证新的 pfx 文件输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure 应用服务无法验证 .pfx 文件:证书验证失败,因为无法加载 的相关文章

随机推荐