【发布时间】:2016-06-27 20:06:55
【问题描述】:
我正在寻找一个可以生成随机证书字符串用于测试目的的实用程序类。知道是否已经实施了吗?
【问题讨论】:
标签: java
我正在寻找一个可以生成随机证书字符串用于测试目的的实用程序类。知道是否已经实施了吗?
【问题讨论】:
标签: java
添加到martijno给出的解决方案中,
可以使用 JCAContentSigner 来避免映射到 AlgorithmIdentifier(即 OID),而不是编写您自己的内容签名器。
JcaContentSignerBuilder 采用 here 定义的算法名称。
X509v3CertificateBuilder certBuilder = new X509v3CertificateBuilder(issuer, serialNumber, startDate, expiryDate, subject, SubjectPublicKeyInfo.getInstance(keyPair.getPublic().getEncoded()));
JcaContentSignerBuilder builder = new JcaContentSignerBuilder("SHA256withRSA");
ContentSigner signer = builder.build(keyPair.getPrivate());
byte[] certBytes = certBuilder.build(signer).getEncoded();
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)certificateFactory.generateCertificate(new ByteArrayInputStream(certBytes));
【讨论】:
内置的 Java X500 库更倾向于使用证书,而不是生成和解析证书。您可能会找到一种方法来做您想做的事,但几乎可以肯定它会很混乱并且在受保护的 API (sun.security.*) 中。
我建议您包含 Bouncy Castle 库(Apache 许可证)。它有一个名为X509V3CertificateGenerator 的类,您可以使用它来设置证书的字段(颁发者、主题、到期日期等)。
然后您应该能够使用 PEMWriter 类从中获取 PEM 字符串。
【讨论】:
X509V3CertificateGenerator 已被弃用(至少在 Bouncy Castle 1.47 中)。他们建议改用X509v3CertificateBuilder(不是在bcprov,而是在bcpkix jar 中)。
bcmail jar 中
bcpkix。