如何仅使用 JDK 支持 类 生成自签名证书?

How to generate a self-signed certificate using only JDK supported classes?

我在 Java 中有一个程序,目前使用私有 JDK 类(CertAndKeyGenX500Name)来生成自签名 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

注:

好吧,那我估计是不存在的

我提交给 JDK 的 RFE 已被接受,现在有一个官方错误:http://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8165481