Для доступа к веб-сервису мне нужен сертификат.
Я сгенерировал свои сертификаты:
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, чтобы можно было использовать этот сертификат для аутентификации на веб-сервисе.
Есть предложения о том, как это сделать?