是否可以将 X509Certificate2 存储在 SQL Server 表中,而不是从文件系统中提取 .p12 文件?我相信你可以,但不确定如何去做。
问问题
6008 次
2 回答
5
使用 .Export() 然后 Convert.ToBase64String() 并保存为 NVARCHAR(MAX)
要保存它:
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.
然后只需恢复(从数据库取回后):
var certBytes = Convert.FromBase64String(stringOfCertWithPrivateKey);
var cert = new X509Certificate2(certBytes);
使用 Export() 比 .RawData 更好,因为您可以选择是否保留私钥(使用 .RawData 将始终剥离它)。
于 2016-05-27T00:55:14.543 回答