2016-08-25 28 views
4

我有一個Java程序,它目前使用私有的JDK類(CertAndKeyGenX500Name)來生成自簽名的X.509證書。 有太多的問題,這種方法:如何僅使用JDK支持的類生成自簽名證書?

  • 內包裝(S)不斷變化:
    • 「sun.security.x509.CertAndKeyGen」,//甲骨文/ Sun/OpenJDK的6,7
    • 「sun.security.tools.keytool.CertAndKeyGen」,//甲骨文/ Sun/OpenJDK的8
    • 「com.ibm.security.x509.CertAndKeyGen」,// IBM SDK 7
    • 「com.ibm .security.tools.CertAndKeyGen「// IBM SDK 8
    • 顯然,一個JDK 7的更新(U111?)最近改變上述
  • 上市的Java 9將隱藏這些類

我想這段代碼轉換到使用標準封裝,支持JDK類。

我已經看過使用壞名字CertificateFactory.generateCertificate()的方法,但沒有運氣:他們不能生成任何證書,他們只能加載現有的證書。

 

有誰知道一個標準的JDK的API,它可以生成一個自簽名的證書?

 

這是據我可以去:

KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA"); 
generator.initialize(2048, SecureRandom.getInstance("SHA1WithRSA")); 
KeyPair keyPair = generator.generateKeyPair(); 
PrivateKey privatekey = keyPair.getPrivate(); 

X500Principal principal = new X500Principal(dn); 

CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); 
// How to generate the self-signed certificate from there? 
// certFactory.generate(inputStream) // only able to load an existing certificate 

 

注:

  • 我們不希望引入的彈跳,城堡的依賴如果可能的話
    • 我已經知道的X509V3CertificateGenerator
  • 我們不想要麼通過ProcessBuilder :)
+0

我注意到這樣一個問題:http://stackoverflow.com/questions/21410695/how-to-programmatically - 生成一個自簽名證書,但它吸引了關注代碼的答案,但不是問題。 – JnRouvignac

+0

當然,現在只是我發現了一個類似的問題:http://stackoverflow.com/questions/36220377/alternative-to-certandkeygen-for-self-signed-certificate-generation-in-java?rq=1 – JnRouvignac

+0

我已經向Oracle提交了Java的RFE。讓我們看看我什麼時候會得到答案。 – JnRouvignac

回答

相關問題