5

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 ファイルに保存するにはどうすればよいですか?

よろしくお願いします。

4

3 に答える 3

3

BouncyCastle.Cryptoバージョン 1.7.4114.6375 では、コードを取得して次のように追加するだけで済みました。

var b = crlTemp.GetEncoded();

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

次に、Windows で「test.crl」ファイルをダブルクリックすると、標準の組み込み証明書失効リスト ダイアログがエラーなしで開き、他の CRL ファイルと比較するとすべての情報が正しく表示されます。

于 2017-08-11T23:59:15.490 に答える
0

PEM 形式の CRL を取得したら、次のコマンドを使用して openssl 経由で変換できます。

openssl crl -in list.pem -outform der -out list.crl
于 2016-06-20T11:06:11.140 に答える