ウェブサービスにアクセスするには、証明書が必要です。X509証明書をデータベースに保存
私は私の本命を生成:
openssl genrsa 1024 > private.key
openssl req -new -x509 -nodes -sha1 -days 1100 -key private.key > public.cer
、私は、X509Certificate2
今X509Certificate2 clientCert = new X509Certificate2("cert.pfx", "password");
として私PFXファイルをロードし、その後
openssl pkcs12 -in public.cer -inkey private.key -export -out client.pfx
によってPFX証明書には、この2のでしょうマージ次のフィールドを含むテーブルをデータベースに作成したい:
PrivateKey NVARCHAR
PublicCer NVARCHAR
Password NVARCHAR
次に、private.keyファイルのコンテンツを----- BEGIN CERTIFICATE -----と----- END CERTIFICATE -----と一緒にpublic.cerと同じにコピーします、パスワードを設定します。 DBからこのデータを読み取って、X509Certificate2の適切なインスタンスを取得するにはどうすればよいですか? つまり、秘密鍵と証明書に基づいてコードからpfxファイルを生成するにはどうすればよいですか?
私はより正確にしようとします:----- --- -----証明書をBEGINと終了
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証明書をロードします - 証明書を送付する-----)。
私の秘密鍵は(----- RSA PRIVATE KEY ----などを... BEGIN)
私がする必要があるRSA形式である:
は、今私は、秘密鍵を取得する必要がありますこれをロードしてserverCertに割り当て、この証明書をWebサービスでの認証に使用できるようにします。
どうすればよいですか?
あなたはここでそれを見つけるでしょう、この問題への答え。 http://www.codeproject.com/KB/security/CertificatesToDBandBack.aspxよろしく、 –
関連:https://stackoverflow.com/questions/893757 – explunit