2013-05-06 29 views
0

我目前正在使用bouncycastle 1.48創建屬性證書請求。由於有(我在這件事情初學者)我unnable將屬性添加到創建請求API的一些變化 我當前的代碼是將屬性添加到證書請求,java + bouncycastle 1.48

 KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); 
    keyGen.initialize(512); 

    KeyPair rsaKey = keyGen.generateKeyPair(); 
    PrivateKey privateKey = rsaKey.getPrivate(); 
    PublicKey publicKey = rsaKey.getPublic(); 

    System.out.println(privateKey.getEncoded()); 
    System.out.println(publicKey.getEncoded()); 
    ContentSigner sigGen = new JcaContentSignerBuilder("SHA1withRSA").build(privateKey); 
    AlgorithmIdentifier rsaEncryption = new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, null); 
    SubjectPublicKeyInfo publicKeyInfo = new SubjectPublicKeyInfo(rsaEncryption, publicKey.getEncoded()); 
    Date startDate = new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000); 
    Date endDate = new Date(System.currentTimeMillis() + 365 * 24 * 60 * 60 * 1000); 
    X500NameBuilder nameBuilder = new X500NameBuilder(); 
    nameBuilder.addRDN(BCStyle.CN, "test request"); 
    nameBuilder.addRDN(BCStyle.C, "UK"); 
    nameBuilder.addRDN(BCStyle.E,"[email protected]"); 
    nameBuilder.addRDN(BCStyle.GENDER,"M"); 
    X500Name name = nameBuilder.build(); 

    PKCS10CertificationRequestBuilder genReq = new PKCS10CertificationRequestBuilder(name,publicKeyInfo); 
    PKCS10CertificationRequest request = genReq.build(sigGen); 
    PEMWriter pemWriter = new PEMWriter(new FileWriter(new File("C:\\certs\\request.txt"))); 
    pemWriter.writeObject(request); 
    pemWriter.flush();  

我的問題是 - 應該正確的語法,怎麼看起來像的addAttribute方法? 在此先感謝

+0

不完全相關,但是'512'位長度的密鑰不再被某些瀏覽器接受爲'安全'。 – EpicPandaForce 2014-11-04 12:55:14

回答

2

這取決於您想要添加的內容。最重要的是要記住,證書請求中的屬性和證書中的擴展名不是一回事。通常,人們試圖添加一個或多個擴展,但在這種情況下,您需要使用適當的PKCS#9屬性來表示此擴展名,而不是與擴展名關聯的OID。

說,例如,你想要求從CA特定的密鑰使用擴展,你會是這樣的:

ExtensionsGenerator extGen = new ExtensionsGenerator(); 

extGen.addExtension(Extension.keyUsage, true, new KeyUsage(KeyUsage.keyCertSign | KeyUsage.cRLSign)); 

genReq.addAttribute(PKCSObjectIdentifiers.pkcs_9_at_extensionRequest, extGen.generate()); 

的extensionRequest塊應該再由CA被認爲包含你想要的擴展。

相關問題