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