Это на самом деле не работает, несмотря на то, что говорится в документации. Ошибка CryptographicException: не удается найти запрошенный объект

оступа к веб-сервису мне нужен сертификат.

Я создал мои сертификаты:

openssl genrsa 1024 > private.key
openssl req -new -x509 -nodes -sha1 -days 1100 -key private.key > public.cer

затем слил эти два в сертификат pfx

openssl pkcs12 -in public.cer -inkey private.key -export -out client.pfx

затем загрузил мой файл pfx как X509Certificate2

X509Certificate2 clientCert = new X509Certificate2("cert.pfx", "password");

Теперь я хотел бы создать таблицу в базе данных, которая содержит следующие поля:

PrivateKey NVARCHAR  
PublicCer NVARCHAR  
Password NVARCHAR  

Затем скопируйте содержимое из файла private.key вместе с ----- BEGIN CERTIFICATE ----- и ----- END CERTIFICATE -----, то же самое для public.cer, и установите пароль. Теперь, как я могу получить правильный экземпляр X509Certificate2, читая эти данные из БД? Другими словами, как я могу сгенерировать файл pfx из кода на основе закрытого ключа и сертификата?

Я постараюсь быть более точным:

 string connectionString; string query; string cert;

    connectionString = ConfigurationManager.ConnectionStrings[0].ConnectionString;
    query = "SELECT clientcert FROM settings_services WHERE ID = 1";

    using (SqlConnection cn = new SqlConnection(connectionString))
    {
        SqlCommand cmd = new SqlCommand(query, cn);
        cn.Open();
        cert = (string)cmd.ExecuteScalar();
    }

    X509Certificate2  serverCert = new X509Certificate2(Encoding.UTF8.GetBytes(cert));

Этот код будет корректно загружать строку сертификата (сертификат x509, начиная с ----- BEGIN CERTIFICATE ----- и заканчивая ----- END CERTIFICATE -----).

Теперь мне нужно получить закрытый ключ:

Мой закрытый ключ в формате RSA (----- НАЧАТЬ RSA ЧАСТНЫЙ КЛЮЧ ---- и т. Д ...)

Мне нужно загрузить его и назначить на serverCert, чтобы иметь возможность использовать этот сертификат для аутентификации в веб-сервисе.

Любые предложения о том, как это сделать?

Ответы на вопрос(2)

Ваш ответ на вопрос