Windows 11: закрытый ключ не используется при защите VBS + High Security (пароль)C#

Место общения программистов C#
Ответить
Anonymous
 Windows 11: закрытый ключ не используется при защите VBS + High Security (пароль)

Сообщение Anonymous »

У меня есть программа C# (работа на .NET 8), которая подписывает данные с использованием клавиши RSA, которая хранится в Windows Cert-/KeyStore. Ключ был импортирован с использованием Windows certmgr.msc в «персональный» магазин. Параметр импорта «Высокая безопасность» (пароль требуется) + Безопасность на основе виртуализации (делает ключ не экспортируемой) была активирована в диалоговом окне «Импорт». < /P>
static void Main()
{
string subjectName = "selfsigned";

using (var store = new X509Store(StoreName.My, StoreLocation.CurrentUser))
{
store.Open(OpenFlags.ReadOnly);
var certs = store.Certificates.Find(X509FindType.FindBySubjectName,
subjectName,validOnly: false);

if (certs.Count == 0)
{
Console.WriteLine($"Certificate containing subject '{subjectName}' not found.");
return;
}

X509Certificate2 cert = certs[0];

using (RSA rsa = cert.GetRSAPrivateKey()) // fails here
{
if (rsa == null)
{
Console.WriteLine("Certificate does not have an RSA private key.");
return;
}

// ... do something with the key
}
}
}
< /code>
Код работает в системе Windows 10 (22H2, последние обновления), когда выполненные Windows отобразит диалог ввода пароля, и если пароль был правильно введен, я могу использовать закрытый ключ, например. Для подписания данных. < /p>
В корпоративной системе Windows 11 (24H2, последние обновления), однако, он не удастся с ошибкой «неверная ручка». Диалог ввода пароля никогда не отображается. То же самое на второй Win 11 Home System. < /P>
Ошибка: < /p>

Незаглавленное исключение.

system.security.cryptography.cryptographycexception: Das angegebene System.security.cryptography.cnghelpers.getProperty (SafeCrypThandle ncrypThandle, String PropertyName, Options CngProperTyoptions)

at system.security.cryptography.cngkey.get_algorithmgroup ()
att System.security.cryptography.rsacng.set_key (значение cngkey)

at system.security.cryptography.rsacng..cor System.security.cryptography.x509Certiationates.certificatePal. C.B__68_1 (CNGKEY CNGKEY)

at System.security.cryptography.x509certificates.certificatepal.getPrivatekey [t]2 createCsp, Func< /code> 2 createcng)

at system.security.cryptography.x509certiationates.certificateextensionscommon.getprivatekey [t] (x509certificate2 сертификат, предикат '1 matchestresstraints)

at program. /> это ошибка Windows 11 или система Windows 11 настроена таким образом, чтобы предотвратить использование таких клавиш? Только если вы установите дополнительный пароль, он всегда выйдет из строя в Windows 11.

Подробнее здесь: https://stackoverflow.com/questions/797 ... y-password
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»