如何在 Azure 环境中从 .pfx 文件创建证书?

How to create certificate from .pfx file on Azure environment?

我正在尝试在 C# 中的 Azure 函数中初始化 x509Certificate2 class 的新实例,如下所示:

X509Certificate2 cert = new X509Certificate2((certPath + @"/integration_certificate.pfx"), "pw", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet| X509KeyStorageFlags.Exportable);

当我在本地执行该函数时,这工作正常,但当它在 Azure 上执行时,我收到以下错误:

Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: The specified network password is not correct
   at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(Byte[] rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags)
   at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
   at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags)

我已经在 Kudu 上使用 OpenSSL 来检查我使用的密码是否正确,结果是正确的。我能够读取有关证书的信息并且一切看起来都是正确的。

我也试过将证书上传到 Azure(看起来是正确的做法),但没有将其包含在源代码中,但我无法让它工作,因为私钥只有 1024位长所以 Azure 不接受它。证书是由第三方生成的,所以我认为我不可能以不同的方式生成证书。

有人有什么建议吗?我目前正在使用 .NET 标准 2.0 作为目标框架 btw。

我假设进程也应该有访问权限。

此外,当您在 Azure 中上传 SSL 证书时,它必须满足几组要求。

•证书必须包含私钥。

•必须为密钥交换创建证书,可导出到个人信息交换 (.pfx) 文件。

•证书的使用者名称必须与用于访问网站的域相匹配。如果您需要使用此证书为多个域提供服务,则需要使用通配符值或指定 subjectAltName 值。

•证书应至少使用 2048 位加密。

我希望您在上传证书时尝试了以下选项。

在下面附上详细信息 link 如果您之前没有尝试过,可以尝试一下。

Binding the Certificates

1st Option

2nd Option