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

时间:2019-04-02 10:49:33

标签: c# azure azure-functions .net-standard x509certificate2

我正在尝试使用如下Azure函数在C#中初始化x509Certificate2类的新实例:

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作为目标框架。

1 个答案:

答案 0 :(得分:0)

我认为该进程也应该具有访问权限。

此外,在Azure中上载SSL证书时必须满足的要求很少。

•证书必须包含一个私钥。

•必须创建证书以进行密钥交换,并且可以将其导出到个人信息交换(.pfx)文件。

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

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

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

如果您之前没有尝试过,请在下面的链接中添加详细信息,以供您尝试。

Binding the Certificates

1st Option

2nd Option

希望这会有所帮助。