c# - 使用 Bouncy CaSTLe c# 创建 CRL 文件

标签 c# bouncycastle certificate-revocation

我已经使用 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();

关于c# - 使用 Bouncy CaSTLe c# 创建 CRL 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34437057/

相关文章:

c# - 无法将 'Microsoft.Expression.Platform.WPF.InstanceBuilders.WindowInstance'类型的对象转换为 'System.Windows.Window'类型

c# - 如何获取 ASP.NET MVC 操作方法来解析在接口(interface)中定义并在抽象类中实现的属性

c# - 开始使用 BouncyCaSTLe 加密 dll c#

security - OCSP 吊销检查整个证书链

Windows LDAP 客户端 - 通过 CRL 启用撤销

c# - 动态设置 LINQ 数据源导致运算符 '==' 与操作数类型 'String' 和 'Int32' 不兼容

c# - 欧拉计划问题 3 帮助

java - 我可以使用标准 Java 密码 API 来使用 BouncyCaSTLe 的可调整 block 密码吗?

c# - BouncyCaSTLe PrivateKey 到 X509Certificate2 PrivateKey

tomcat - 根据 Tomcat 7 中的证书吊销列表验证客户端证书