Создайте x509 сертификат с openssl/makecert инструментом

Я создаю x509 сертификат с помощью makecert со следующими параметрами:

makecert-r-pe-n "CN=Client"-ss MyApp

Я хочу использовать этот сертификат, чтобы зашифровать и дешифровать данные с алгоритмом RSA. Я обращаюсь к сгенерированному сертификату в хранилище сертификатов окон, и все кажется хорошо (Это имеет закрытый ключ, открытый ключ является ключом RSA с 1 024 битами и так далее..)

Теперь я использую этот код C# для шифрования данных:

X509Store store = new X509Store("MyApp", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectName, "Client", false);
X509Certificate2 _x509 = certs[0];

using (RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)_x509.PublicKey.Key)
{
    byte[] dataToEncrypt = Encoding.UTF8.GetBytes("hello");
    _encryptedData = rsa.Encrypt(dataToEncrypt, true);
}

При выполнении Зашифровать метода я получаю CryptographicException с сообщением "Плохой ключ".

Я думаю, что код прекрасен. Вероятно, я не создаю сертификат правильно. Какие-либо комментарии?Спасибо

----------------РЕДАКТИРОВАНИЕ--------------
Если кто-либо знает, как создать использование сертификата OpenSsl, также действительный ответ для меня.

5
задан Zé Carlos 25 June 2010 в 11:14
поделиться

1 ответ

Чтобы разрешить использование ключа для шифрования, вы должны использовать -sky -option . По умолчанию «makecert »использует спецификацию ключа AT_SIGNATURE, которая не работает с шифрованием / дешифрованием. Вместо этого попросите его использовать спецификацию AT_KEYEXCHANGE, введя следующую команду:

makecert -r -pe -n "CN=Client" -ss MyApp -sky Exchange

(Не забудьте удалить предыдущий ключ или использовать другое имя контейнера).

4
ответ дан 14 December 2019 в 19:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: