【发布时间】:2013-01-20 15:09:03
【问题描述】:
我用 Java 代码创建了一个自签名证书并添加到 KeyStore。现在我想将创建的私钥和证书导出到 PEM 格式的文件中。是否有可能在没有任何第三方库的情况下实现这一目标?以下是我用于创建自签名证书的代码。
public void createSelfSignedSSLCertificate() {
try {
final CertAndKeyGen keypair = new CertAndKeyGen("RSA", "SHA1WithRSA", null);
final X500Name x500Name =
new X500Name(commonName, organizationalUnit, organization, city, state, country);
keypair.generate(keysize);
final PrivateKey privKey = keypair.getPrivateKey();
final X509Certificate[] chain = new X509Certificate[1];
chain[0] = keypair.getSelfCertificate(x500Name, new Date(), validity * 24 * 60 * 60);
final String alias = JettySSLConfiguration.SSL_CERTIFICATE_ALIAS;
keyStore.setKeyEntry(alias, privKey, keyStorePassword.toCharArray(), chain);
} catch (final Exception e) {
// Handle Exception
}
}
任何关于如何将密钥和证书导出为 PEM 格式文件的建议都会非常有帮助。
【问题讨论】:
-
确实没有单一的“PEM”格式。有各种不同的加密结构,当 base64 编码并用
-----BEGIN <xyz>和-----END <xyz>包围时,被描述为“PEM 格式”。您需要具体说明您想要哪一个。 -
不要使用一些不属于 J2SE API 的内部
sun.*包,而应该考虑使用第 3 方库。
标签: java ssl openssl ssl-certificate x509certificate