Создайте сертификат x509 с помощью инструмента openssl / makecert - PullRequest
5 голосов
/ 09 июня 2010

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

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

Я хочу использовать этот сертификат для шифрования и дешифрования данных с помощью алгоритма RSA.Я смотрю на сгенерированный сертификат в хранилище сертификатов Windows и все выглядит нормально (у него есть закрытый ключ, открытый ключ - это ключ RSA с 1024 битами и т. Д.):

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);
}

При выполнении метода Encrypt я получаю CryptographicException с сообщением «Неверный ключ».

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

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

Ответы [ 2 ]

4 голосов
/ 10 июня 2010

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

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

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

1 голос
/ 17 мая 2011

Это была еще одна страница, на которую я наткнулся, когда пытался найти примеры использования makcert с сертификатами x509 и rsa с использованием c #, и, к сожалению, это лишь часть решения.Я собрал все фрагменты в записи блога, которая может заинтересовать людей, и найти ее можно здесь: http://nick -howard.blogspot.com / 2011/05 / makecert-x509-Certificates-and-rsa.html

...