2012-11-26 55 views
0

我發現許多答案轉換從pemder通過充氣城堡圖書館轉換der到pem

但是,我找不到方法將der轉換爲pem

例如,下列代碼生成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(); 

} 

一樣, [0]版本:3 的SerialNumber:1353995641265 IssuerDN:CN =測試證書 開始日期: Mon Nov 26 21:54:01 PST 2012 Final Date:Mon Nov 26 21:54:51 PST 2012

但是,我不知道如何從der文件製作pem編碼認證。

+0

這個問題似乎很混亂。如果你完全從給出的例子中刪除fwO的東西,它將基本留下用於以PEM格式寫入X509Certificate到系統的代碼。 fwO部件不生成DER,因此您需要調用getEncoded而不是toString。 –

回答

4

我不是Java開發人員,因此我無法向您展示代碼或指向某個類。 PEM只是二進制DER的Base64編碼,帶有標準頭和尾部。

+1

我的歉意@owlstead。我在我的手機上,仍然無法打好它。只是老skool。 –

+0

是的,我知道那種感覺。也許在你回家後編輯它,或者稍後輸入。我可以在我的打字機上打字,但我仍然沒有發現如何快速內嵌代碼,因爲屏幕鍵盤上完全沒有右側字符。在發佈前重讀和修改是必需的。 –

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; 
    } 
}