我有一个Java程序,当前使用私有(private)JDK类(CertAndKeyGen
和X500Name
)生成自签名X.509证书。
这种方法存在太多问题:
我想将此代码转换为使用受支持的标准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
keytool
调用ProcessBuilder
:) 最佳答案
好的,那么我猜它不存在。
我提交给JDK的RFE已被接受,现在有一个正式的错误:http://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8165481