Я получаю эту ошибку при попытке загрузить сертификат .p12 в .Net 7:
System.Security.Cryptography.CryptographicException: 'The specified network password is not correct.'
С помощью этого кода:
var certs = new X509Certificate2Collection();
certs.Import(certBytes, password);
И после некоторой рассылки от службы поддержки поставщика услуг, к которой я попытался подключиться с помощью сертификата сервера, я получил новый сертификат, который работает нормально.
Они говорят, что первый, выдающий «сетевой пароль неверен», был создан в новой версии OpenSSL с AES-256-CBC, а новый работает с OpenSSL 1.1.1 и pbeWithSHA1And40BitRC2-CBC, но оба созданы из одного и того же. оригинальные pem и файлы ключей.
У кого-нибудь есть идеи, почему я не могу загрузить в .Net 7 сертификат, созданный с помощью нового OpenSSL и AES-256-CBC?
Если сертификат/пароль в порядке, .NET, вероятно, на самом деле не поддерживает этот алгоритм. Тогда вариантом может стать BC/BouncyCastle.
Вы используете что-то старше Windows 10? В Windows сейчас есть поддержка AES, но она была добавлена «недавно» (где-то во время Windows 10).
@Topaco Я могу установить его в хранилище сертификатов Windows, используя пароль, который я получил от поставщика услуг, но когда .Net 7 пытается загрузить его, он получает неверный сетевой пароль.
@bartonjs На машине разработчика у меня стоит WIndows Server 2016 Standard, но я думаю, что проблема скорее в версии .Net.
Поддержка Windows для AES-256-CBC в PFX, похоже, была добавлена в Windows 10-1709. Поэтому это не удастся, если вы используете Windows Server 2016 (поскольку все еще поддерживается только вариант «1607» 2016 года).
До 2023 года .NET в Windows никогда не просматривал PFX, а просто отправлял его в ОС; но в тех случаях, когда .NET использует PFX, он поддерживает современные алгоритмы независимо от версии Windows. (В зависимости от конкретной версии .NET и конкретного PFX это может привести к тому, что ваш PFX случайно заработает на Windows Server 2016... но, как правило, это не так)
Вы уверены, что пароль для первого сертификата правильный, т. е. пытались ли вы проверить сертификат с этим паролем с помощью другого кода/инструмента (например, OpenSSL)?