Magasin de Certificat X509 dans la base de données

Afin d'accéder au service web j'ai besoin d'un certificat.

J'ai généré mon certs:

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

ensuite fusionné ce deux en un pfx certificat par

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

puis chargé mon fichier pfx comme X509Certificate2

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

Maintenant, je voudrais créer une table dans la base de données qui contient les champs suivants:

PrivateKey NVARCHAR  
PublicCer NVARCHAR  
Password NVARCHAR  

Puis copiez le contenu du privé.fichier de clé, avec -----BEGIN CERTIFICATE - - - - -- - - - END CERTIFICATE-----, de même pour le public.cer, et le mot de passe.
Maintenant, comment puis-je obtenir un bon exemple de X509Certificate2 par la lecture de ces données à partir de DB?
En d'autres termes, comment puis-je générer un fichier pfx de code, basé sur la clé privée et le certificat?

Je vais essayer d'être plus précis:

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

Ce code va charger correctement un certificat de chaîne de caractères (certificat x509, en commençant avec -----BEGIN CERTIFICATE----- et la fin -----END CERTIFICATE-----).

Maintenant, j'ai besoin d'obtenir la clé privée:

Ma clé privée est au RSA format (-----BEGIN RSA PRIVATE KEY---- etc...)

J'ai besoin de le charger, et de l'attribuer à serverCert, afin d'être en mesure d'utiliser ce certificat pour s'authentifier sur le service web.

Des suggestions sur la façon de le faire?

La réponse à ce problème, vous le trouverez ici. codeproject.com/KB/security/CertificatesToDBandBack.aspx en ce qui Concerne
Connexes: stackoverflow.com/questions/893757

OriginalL'auteur | 2011-02-08