我正在尝试使用如下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作为目标框架。
答案 0 :(得分:0)
我认为该进程也应该具有访问权限。
此外,在Azure中上载SSL证书时必须满足的要求很少。
•证书必须包含一个私钥。
•必须创建证书以进行密钥交换,并且可以将其导出到个人信息交换(.pfx)文件。
•证书的主题名称必须与用于访问网站的域匹配。如果需要使用此证书为多个域提供服务,则需要使用通配符值或指定subjectAltName值。
•证书应至少使用2048位加密。
我希望您在上传证书时尝试了以下选项。
如果您之前没有尝试过,请在下面的链接中添加详细信息,以供您尝试。
希望这会有所帮助。