0

pemからderへの変換に向けて多くの答えを見つけました。

ただし、 derpemに変換する方法が見つかりません。

たとえば、次のコードはderエンコードされたファイルpkcs10.cerを生成します

public static void main(String[] args) throws Exception
{
    X509Certificate[] chain = buildChain();
    PEMWriter pemWrt = new PEMWriter(new OutputStreamWriter(System.out));
    pemWrt.writeObject(chain[0]);

    FileWriter fwO = new FileWriter("pkcs10.cer");
    fwO.write((chain[0]).toString());

    fwO.close();
    pemWrt.close();

}

Like、[0]バージョン:3シリアル番号:1353995641265 IssuerDN:CN =テスト証明書開始日:Mon Nov 26 21:54:01 PST 2012最終日:Mon Nov 26 21:54:51 PST 2012

ただし、derファイルからpemエンコードされた認証を作成する方法がわかりません。

4

2 に答える 2

8

私はJava開発者ではないため、コードを表示したり、クラスをポイントしたりすることはできません。PEMは、バイナリDERのBase64エンコーディングであり、標準のヘッダーとトレーラーを備えています。

于 2012-11-26T13:19:34.433 に答える
1

以下は、さまざまなBCオブジェクトをPEM文字列シリアル化形式に変換するメソッドです。このコードはBCのC#バージョン用ですが、それほど労力をかけずにJavaバージョンに変換する必要があることに注意してください。

// converts bouncy castle objects of type
// X509Certificate, X509Crl, AsymmetricCipherKeyPair, AsymmetricKeyParameter,
// IX509AttributeCertificate, Pkcs10CertificationRequest, Asn1.Cms.ContentInfo 
// to PEM format string
public string ToPem(object obj)
{
    using (MemoryStream mem = new MemoryStream())
    {
        StreamWriter writer = new StreamWriter(mem);
        Org.BouncyCastle.OpenSsl.PemWriter pem = new Org.BouncyCastle.OpenSsl.PemWriter(writer);
        pem.WriteObject(obj);
        // force the pem write to flush it's data - kind of abnoxious you have to do that
        pem.Writer.Flush();
        // create a stream reader to read the data.
        StreamReader reader = new StreamReader(mem);
        mem.Position = 0;
        string pemStr = reader.ReadToEnd();
        return pemStr;
    }
}
于 2013-02-12T15:11:06.127 に答える