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

问题描述 投票:0回答:4

多年来,我能够使用此 Stack Overflow 答案中的 OpenSSL 创建方法上传新的 pfx 文件,以在 Azure 应用服务上进行 SSL 绑定:

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

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

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

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

azure ssl azure-web-app-service certificate pfx
4个回答
37
投票

应用服务私有证书要求

应用服务私有证书必须满足 以下要求

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

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

OpenSSL 3+ 不再默认使用 DES 加密。原始命令需要附加

-legacy
-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 文件输出。


3
投票

对我来说,这个问题只是通过更改密码就解决了。我以前的密码有特殊字符,然后我将其更改为仅字母。


0
投票

如果具体错误是

添加私钥证书时出错。至少有一份证书不合格 有效(证书验证失败,因为无法加载)

如果您使用 OpenSSL 中的以下脚本来生成

openssl pkcs12 -export -out forUploadToAzure.pfx -inkey privateKeyUsedToGenerateCRT.key -in certificateGenerated.crt

如果这是问题所在,那么......

当您运行 pfx 生成脚本时,OpenSSL 3 会生成更长的证书序列号。我建议从门户下载 OpenSSL 1 (https://slproweb.com/products/Win32OpenSSL.html),这应该有助于生成 Azure pfx 导入工具将接受的更短的证书序列号

参考 - https://learn.microsoft.com/en-us/answers/questions/192112/error-message-occurrs-when-trying-to-upload-pfx-cer.html


0
投票

我在使用 OpenSSL 时遇到了同样的问题。我终于发现这对我有用(对于从 GoDaddy 下载的 CRT 文件)。

将 CRT 文件转换为 CER 文件

  1. 双击 .crt 文件,然后单击“打开文件”对话框中的 Open 按钮。
  2. 选择详细信息选项卡,然后单击复制到文件按钮。
  3. 在证书向导中选择下一步。
  4. 选择 Base-64 编码的 X.509(.CER),然后选择下一步。
  5. 选择浏览,找到要保存 .CER 文件的位置,然后输入证书名称。
  6. 选择“下一步”,然后选择“完成”。

将 CER 文件转换为 PFX 文件

  1. 打开命令提示符并导航到包含 CER 文件的文件夹
  2. 使用Windows实用程序certutil如下(您需要输入密码,所以我更喜欢先想出一个密码并将其交给记事本)
certutil -MergePFX cert_name.cer cert_name.pfx
  1. 输入密码,然后确认(我通常发现最好粘贴密码并按回车键,因为您不会看到任何字符出现)。

然后我就可以使用生成的 PFX 文件来绑定我的应用程序服务,没有任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.