X509Certificate2 인스턴스에서 AuthorityKeyIdentifier 확장을 추출하는 방법을 찾고 있습니다. 나는 내장 된 지원을 보지 못했지만 윈도우는 인증서 체인을 제대로 만들 수 있기 때문에 어떤 수준의 기능이 있어야한다는 것을 알고 있습니다. 대답이 DER 파서를 굴릴 것이라면 참조 할 수있는 좋은 구현이 있습니까?.NET의 X509Certificate2에서 AuthorityKeyIdentifier를 추출하는 방법
3
A
답변
8
X509Certificate2.Extensions 등록 정보에서 확장을 반복하고 OID가 2.5.29.35 인 확장자 (http://www.alvestrand.no/objectid/2.5.29.35.html)를 찾으십시오. 이것이 AuthorityKeyIdentifier 확장입니다.
[편집 :. 다음 추가]
확장 속성의 각 구성원은 코딩되는 ASN이다. 그래서 당신은 사람이 읽을 수 또는 기계 분석 할 수있는 형식으로 얻을 수있는 다음과 같은 작업을 수행 할 수 있습니다
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
...
X509Extension extension; // The OID 2.5.29.35 extension
AsnEncodedData asndata = new AsnEncodedData(extension.Oid, extension.RawData);
Console.WriteLine(asndata.Format(true));
을 마이크로 소프트 중간 CA 인증서 중 하나를 들어, 형식() 메소드는 다음 반환
[1]Authority Info Access
Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)
Alternative Name:
URL=http://www.microsoft.com/pki/certs/MicrosoftRootCert.crt
구문 분석은 확실히 쉽지는 않지만 정규 표현식 \[\d+\]Authority Info Access
으로 시작하는 줄을 찾아 일반 표현식 URL=(.+)
(8 개의 공백이 서식에서 불분명 함)으로 그 아래에 한 줄을 찾고 괄호로 묶은 그룹의 URL을 사용할 수 있습니다 .
0
더 쉬운 옵션을 사용할 수 있습니다. 인증서 처리의 유연성을 높이는 기존 구성 요소를 사용하십시오. BouncyCastle 또는 SecureBlackbox을 사용할 수 있습니다.
흥미롭게도 충분히 [Microsoft] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa379070(v=vs.85) .aspx) OID는 2.5.29.1이지만, rfc5280] (http://www.ietf.org/rfc/rfc5280.txt)는 최종 세그먼트가 35임을 동의합니다. 어떤 경우에도 결과는 옥텟 문자열이며 인코딩 된 값을 추출하려고합니다. – Tedford
확장 기능을 사람이 읽을 수있는 것으로 추출하는 방법과 약간의 노력으로 컴퓨터를 구문 분석 할 수있는 방법을 보여줍니다. – akton
2.5.29.1은 * old * OID입니다. http://www.alvestrand.no/objectid/2.5.29.1.html –