Question

Est-il possible de stocker un X509Certificate2 dans une table SQL Server plutôt que tirer un fichier .p12 du système de fichiers? Je suis sûr que vous pouvez, mais ne savez pas comment s'y prendre.

Était-ce utile?

La solution

est sans aucun doute possible, le X509Certificate2 a propriété de RawData qui peut être sauvegardé dans votre base de données SQL. Pour reconstruire le certificat que vous pouvez utiliser cette constructeur

var cert = new X509Certificate2(filename);
var data = cert.RawData;

// save data to database...

// Fetch data from database...

cert = new X509Certificate2(data);

Autres conseils

Utilisez .EXPORT () Convert.ToBase64String puis () et enregistrer en tant que NVARCHAR (MAX)

Pour enregistrer:

var cert = new X509Certificate2(filename);
var stringOfCertWithPrivateKey = Convert.ToBase64String(cert.Export(X509ContentType.Pkcs12));

// Or as a regular cert, which will strip the private key out
var stringOfCertWithoutPrivateKey = Convert.ToBase64String(cert.Export(X509ContentType.Cert));

// Save either string as NVARCHAR(MAX) in the DB, it's just a string now.

Alors que la restauration (après l'avoir obtenu de retour de DB) avec:

var certBytes = Convert.FromBase64String(stringOfCertWithPrivateKey);
var cert = new X509Certificate2(certBytes);

Utiliser export () est meilleur que .RawData que vous pouvez choisir de persister la clé privée ou non (à l'aide .RawData dépouillera toujours).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top