IT/전자세금계산서
C# : 선택한 공인인증서 정보 가져오기(3)
홍시쿼카
2020. 4. 7. 13:50
물론 모든 공인인증서를 무조건 가져오는 것보다 용도에 맞는 공인인증서만 가지고 오는 것이 맞지만 일단 지금은 테스트임으로 구체적인 설계는 넘어가도록 하겠습니다. 그 다음은 공인인증서의 등록기관, 등록일자, 만료일자 등의 구체적 정보를 빼내는 방법에 대해 공부하도록 하겠습니다.
1. 인증서 정보 가져오기
NPKI폴더 경로를 따라 들어가는 방법은 전 글에 다룬 적이 있어서 패스하도록 하겠습니다. 만약 해당 내용을 보고싶은 분들은 아래의 링크를 참고해주세요.
milkoon1.tistory.com
자 이제 활용단계입니다. 위의 링크는 단순히 NPKI경로로 가서 해당 인증서폴더의 이름만 가져왔습니다. 하지만 저희는 해당 인증서의 정보가 필요한 것이죠. 정보를 빼낼 때 필요한 것들은 SignCert.der경로, SignPri.key경로입니다.
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Asn1;
public void GetCertInfo()
{
try
{
string szSignCertFile = "SignCert.der경로";
string szSingPriFile = "SignPri.key경로";
X509CertificateStructure xCert;
X509Certificate2 cert;
byte[] byteCert;
// 인증서 읽기
cert = new X509Certificate2(szSignCertFile);
byteCert = File.ReadAllBytes(szSignCertFile);
xCert = X509CertificateStructure.GetInstance(Asn1Object.FromByteArray(byteCert));
//--------------------------------------------------------------
// 인증서, 개인키 파일경로 저장
string CertFilePath = szSignCertFile;
string CertPivateKeyFilePath = szSingPriFile;
// 인증서명
string CertName = cert.GetNameInfo(X509NameType.DnsName, false);
// 인증기관
string RegOrganization = cert.GetNameInfo(X509NameType.DnsName, true);
// 인증서 등록(시작)일
string RegDate = cert.NotBefore.ToString("yyyyMMdd");
// 인증서 만료일
string ExpDate = cert.NotAfter.ToString("yyyyMMdd");
// 인증서 일련번호
// 16진수 문자열을 숫자로 변경 - 앞에 '0'을 제외
string SerialNo = cert.SerialNumber.TrimStart('0');
}
catch (Exception ex)
{
// 예외 처리
Trace.WriteLine(ex.ToString());
return;
}
}
위의 메소드와 같이 처리하시면 인증서명, 인증기관, 인증서등록일, 만료일 등 정보를 가져올 수 있답니다!