문제

파일 시스템에서 .p12 파일을 가져 오지 않고 x509certificate2를 SQL Server 테이블에 저장할 수 있습니까? 나는 당신이 이것에 대해 어떻게 해야할지 확실하지 않다고 확신합니다.

도움이 되었습니까?

해결책

이것은 확실히 가능합니다. x509certificate2에는 a가 있습니다 RawData SQL 데이터베이스에 저장할 수있는 속성. 인증서를 재구성하려면이를 사용할 수 있습니다 건설자

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

// save data to database...

// Fetch data from database...

cert = new X509Certificate2(data);

다른 팁

.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.

그런 다음 (DB에서 다시 얻은 후) : 다음과 같이 복원하십시오.

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

export ()를 사용하면 개인 키를 지속하도록 선택할 수 있으므로 .Rawdata보다 낫습니다 (.RawData를 사용하면 항상 스트라이프를 제거 함).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top