2012-02-07 20 views
2

証明書の署名に関して少し問題があります。私は.net bouncycastle apiを使用しています。私はopen-sslを使ってroot-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(); 
}