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

2eafrhcq  于 2022-11-14  发布在  其他
关注(0)|答案(2)|浏览(246)

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

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

但是,现在执行相同的操作会出现以下错误:
至少有一个证书无效(证书验证失败,因为无法加载它。)

有什么方法可以解决这个问题?

8wtpewkr

8wtpewkr1#

应用服务私有证书要求

应用程序服务专用证书必须满足以下要求:

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

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

OpenSSL 3+不再使用DES加密作为默认加密。原始命令需要附加-legacy-provider-pathlegacy.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文件的路径,并将password -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文件输出。

gojuced7

gojuced72#

如果特定错误为
添加私钥证书时出错。至少有一个证书无效(证书验证失败,因为无法加载它)
如果您使用OpenSSL中的以下脚本来生成

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

如果这就是问题所在,那么......
当您运行pfx生成脚本时,OpenSSL 3会生成较长的证书序列号。我建议从门户(https://slproweb.com/products/Win32OpenSSL.html)下载OpenSSL 1,这将有助于生成Azure pfx导入工具将接受的较短证书序列号
参考-https://learn.microsoft.com/en-us/answers/questions/192112/error-message-occurs-when-trying-to-upload-pfx-cer.html

相关问题