如何在java中创建证书pfx文件?

时间:2014-10-11 06:06:36

标签: java security certificate pfx

我需要在java中使用密码创建证书pfx文件。我在谷歌搜索,可以创建证书" cer"文件http://www.java2s.com/Tutorial/Java/0490__Security/CreatingaSelfSignedVersion3Certificate.htm

我在主

中添加代码
FileOutputStream fos = null;
fos = new FileOutputStream("public.cer");
fos.write(cert.getEncoded());
fos.close();

这只能在没有密码的情况下工作。

2 个答案:

答案 0 :(得分:3)

通常.pfxpkcs12是保存公钥,私钥对的密钥库。此外,如果您在链接示例中使用带有公共证书的RSA密钥对,通常此证书必须由证书颁发机构颁发,无论如何我认为您正在尝试保存自签名证书,要这样做,你必须直接使用java.security.KeyStore课而不是FileOutputStream,我给你一个样本:

import java.io.FileOutputStream;
import java.security.KeyStore;
import java.security.cert.X509Certificate;

....

X509Certificate cert = // your certificate...
// generate a keystore instance
KeyStore ks = KeyStore.getInstance("PKCS12");
// save your cert inside the keystore
ks.setCertificateEntry("YourCertAlias", cert);
// create the outputstream to store the keystore
FileOutputStream fos = new FileOutputStream("/your_path/keystore.pfx");
// store the keystore protected with password
ks.store(fos, "yourPassword".toCharArray());

....

正如我在密钥库中通常所说,您存储密钥对,通常使用:setKeyEntry(String alias, byte[] key, Certificate[] chain)setKeyEntry(String alias, Key key, char[] password, Certificate[] chain)但是使用上面的代码,您可以在密钥库中存储证书,并使用密码保护密钥。有关详细信息,请查看:java keystore api

希望这有帮助,

答案 1 :(得分:-1)

我有答案:

    KeyPair pair = generateRSAKeyPair();
    X509Certificate cert = generateV3Certificate(pair); 
    KeyStore ks = KeyStore.getInstance("PKCS12", "BC");   
    char[] password = "abc".toCharArray();
    ks.load(null,null);
    ks.setCertificateEntry(cert.getSerialNumber().toString(), cert);
    ks.setKeyEntry(cert.getSerialNumber().toString(), pair.getPrivate(), password, new Certificate[]{cert,cert});
    FileOutputStream fos = new FileOutputStream("keystore.pfx");
    ks.store(fos, password);
    fos.close();