簡體   English   中英

使用Bouncy Castle c#創建CRL文件

[英]Create CRL file with Bouncy Castle c#

我已經用Bouncy Castle構建了自己的根CA證書,並且正在使用它來構建其他證書。 我想使用Bouncy Castle C#構建一個證書吊銷列表(CRL)以包括已吊銷的證書列表。 例:

//Retrieve CA root certificate

X509Store CAstore = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
CAstore.Open(OpenFlags.ReadWrite | OpenFlags.OpenExistingOnly);

X509Certificate2Collection x509Certificate2Collection =
CAstore.Certificates.Find(X509FindType.FindBySerialNumber,
                         this.textBoxSerialCA.Text, true);

X509Certificate2 cert = x509Certificate2Collection[0];
var certCA = DotNetUtilities.FromX509Certificate(cert);
CAstore.Close();

X509V2CrlGenerator crlGen = new X509V2CrlGenerator();
crlGen.SetIssuerDN(certCA.IssuerDN);
crlGen.SetThisUpdate(DateTime.Now);
crlGen.SetNextUpdate(DateTime.Now.AddYears(1));
crlGen.SetSignatureAlgorithm("SHA1withRSA");

crlGen.AddCrlEntry(BigInteger.One, DateTime.Now, CrlReason.PrivilegeWithdrawn);

crlGen.AddExtension(X509Extensions.AuthorityKeyIdentifier,
                   false, 
                   new AuthorityKeyIdentifierStructure(certCA));

crlGen.AddExtension(X509Extensions.CrlNumber,
                   false, 
                   new CrlNumber(BigInteger.One));

var randomGenerator = new CryptoApiRandomGenerator();
var random = new SecureRandom(randomGenerator);

var Akp = Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair(cert.PrivateKey).Private;                


X509Crl crlTemp = crlGen.Generate(Akp,random);

到此為止一切正常。 如何將X509Crl對象保存到.crl文件中?

最好的祝福。

這個答案來得很晚,但是您可以使用Bouncy Castle中的PemWriter類來寫入PEM文件。

PemWriter pemWriter = new PemWriter(new StreamWriter(File.Open(fileName, FileMode.Create)));
pemWriter.WriteObject(crlTemp);
pemWriter.Writer.Flush();
pemWriter.Writer.Close();

在獲得PEM格式的CRL之后,您可以使用以下命令通過openssl對其進行轉換:

openssl crl -in list.pem -outform der -out list.crl

BouncyCastle.Crypto版本1.7.4114.6375中,我能夠獲取您的代碼並只需添加:

var b = crlTemp.GetEncoded();

System.IO.File.WriteAllBytes(@"C:\temp\test.crl", b);

然后,在Windows中,雙擊“ test.crl ”文件將打開標准的內置證書吊銷列表對話框,而不會出現任何錯誤,並且與其他CRL文件相比,所有信息看起來都是正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM