Aby uzyskać dostęp do serwisu internetowego, potrzebuję certyfikatu.Przechowuj certyfikat X509 w bazie danych
I generowane moje certyfikatów:
openssl genrsa 1024 > private.key
openssl req -new -x509 -nodes -sha1 -days 1100 -key private.key > public.cer
następnie połączyła to dwa do certyfikatu pfx przez
openssl pkcs12 -in public.cer -inkey private.key -export -out client.pfx
następnie załadować mój plik pfx jak X509Certificate2
X509Certificate2 clientCert = new X509Certificate2("cert.pfx", "password");
Teraz chciałbym jak utworzyć tabelę w bazie danych, która zawiera następujące pola:
PrivateKey NVARCHAR
PublicCer NVARCHAR
Password NVARCHAR
Następnie skopiuj zawartość z pliku private.key, razem z ----- BEGIN CERTIFICATE ----- i ----- END CERTIFICATE -----, to samo dla public.cer i ustaw hasło. Teraz, w jaki sposób uzyskać poprawne wystąpienie certyfikatu X509Certificate2, odczytując te dane z bazy danych? Innymi słowy, w jaki sposób mogę wygenerować plik pfx z kodu na podstawie klucza prywatnego i certyfikatu?
postaram się być bardziej precyzyjny:
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));
Ten kod poprawnie załadować ciąg certyfikatów (certyfikat X509, zaczynając od ----- BEGIN CERTIFICATE ----- a kończąc --- --END CERTYFIKAT -----).
Teraz muszę dostać klucz prywatny:
Mój klucz prywatny jest w formacie RSA (----- BEGIN RSA PRIVATE KEY ---- etc ...)
muszę załaduj go i przypisz go do serverCert, aby móc używać tego certyfikatu do uwierzytelniania w usłudze internetowej.
Wszelkie sugestie, jak to zrobić?
Odpowiedzią na ten problem można go znaleźć tutaj. http://www.codeproject.com/KB/security/CertificatesToDBandBack.aspx Pozdrawiam –
Powiązane: https://stackoverflow.com/questions/893757 – explunit