4
我有一個Java程序,它目前使用私有的JDK類(CertAndKeyGen
和X500Name
)來生成自簽名的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
:)
我注意到這樣一個問題:http://stackoverflow.com/questions/21410695/how-to-programmatically - 生成一個自簽名證書,但它吸引了關注代碼的答案,但不是問題。 – JnRouvignac
當然,現在只是我發現了一個類似的問題:http://stackoverflow.com/questions/36220377/alternative-to-certandkeygen-for-self-signed-certificate-generation-in-java?rq=1 – JnRouvignac
我已經向Oracle提交了Java的RFE。讓我們看看我什麼時候會得到答案。 – JnRouvignac