将X509Certificate2存储在DB中
是否可以将X509Certificate2存储在SQL Server表中而不是从文件系统中提取.p12文件? 我相信你可以,但不知道如何去做。
这绝对是可能的,X509Certificate2有一个RawData属性,可以保存到SQL数据库中。 要重建证书,您可以使用此构造函数
var cert = new X509Certificate2(filename); var data = cert.RawData; // save data to database... // Fetch data from database... cert = new X509Certificate2(data);
使用.Export()然后转换.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将始终剥离它)。
上述就是C#学习教程:将X509Certificate2存储在DB中分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/955780.html