Я пытаюсь инициализировать новый экземпляр класса x509Certificate2 в C # в функции Azure следующим образом:
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)
Я использовал OpenSSL на Kudu, чтобы проверить, что я использую правильный пароль, и это подтвердилось.Я могу прочитать информацию о сертификате, и все выглядит правильно.
Я также пытался загрузить сертификат в Azure (похоже, правильный способ сделать это), не включая его в исходный код, ноЯ не могу заставить это работать, так как закрытый ключ имеет длину всего 1024 бита, поэтому Azure его не принимает.Сертификат генерируется третьей стороной, поэтому я не думаю, что я могу создать сертификат по-другому.
У кого-нибудь есть какие-либо предложения?В настоящее время я использую стандарт .NET 2.0 в качестве целевой платформы.