2012-02-07 2 views
2

인증서 서명과 관련하여 약간의 문제가 있습니다. 나는 .net Bouncycastle API를 사용하고 있습니다. 추가 인증서에 서명하기 위해 사용하려는 open-ssl을 사용하여 루트 CA를 생성했습니다. open-ssl에서 파일을 읽을 수 없기 때문에 생성 된 인증서를 확인할 수 없다는 문제가 있습니다. 추가 조사 결과, "BEGIN CERTIFICATE"와 "END CERTIFICATE"태그가 내 파일에서 누락 되었음이 밝혀졌습니다.서명 인증서

오픈 SSL 오류 : 는 3900 : 오류 : 0906D06C : PEM 루틴 : PEM_read_bio : 없음 출발 선이 :. \ 암호가 \ PEM은 pem_lib.c \ : 650 : 기대 : 신뢰할 수있는 인증

다음 코드는 방법을 보여줍니다 나는 생성 과정을 성취한다.

X509V3CertificateGenerator generator = new X509V3CertificateGenerator(); 
generator.SetSerialNumber(BigInteger.ProbablePrime(120, new Random())); 
generator.SetIssuerDN(serverCertificate.SubjectDN); 
generator.SetNotBefore(DateTime.Now); 
generator.SetNotAfter(DateTime.Now.AddYears(5)); 
generator.SetSubjectDN(certificationRequestInfo.Subject); 
generator.SetPublicKey(publicKey); 
generator.SetSignatureAlgorithm("SHA512withRSA"); 
generator.AddExtension(X509Extensions.AuthorityKeyIdentifier, false, new  AuthorityKeyIdentifierStructure(serverCertificate)); 
generator.AddExtension(X509Extensions.SubjectKeyIdentifier, false, new SubjectKeyIdentifierStructure(publicKey)); 

var newClientCert = generator.Generate(kP.Private); 

newClientCert.Verify(kP.Public); 
byte[] b = DotNetUtilities.ToX509Certificate(newClientCert).Export(X509ContentType.Cert); 

내가 어떤 힌트 나 아이디어를 매우 감사하게 될 것이다는 ... 종류

마이클

+0

고정 마커를 추가하기 만하면 작동합니까? 그게 최종 해결책은 아니지만 그게 유일한 문제인지를 아는 데 도움이 될 것입니다. –

답변

3

BouncyCastle C 번호는 PEM에서 인증서를 작성하기위한 Org.BouncyCastle.OpenSsl 네임 스페이스에서 지원이에 관하여 형식 :

Org.BouncyCastle.X509.X509Certificate cert = ...; 
using (FileStream fs = ...) 
{ 
    TextWriter w = new StreamWriter(fs); 
    PemWriter pw = new PemWriter(w); 
    pw.WriteObject(cert); 
    pw.Writer.Close(); 
}