以编程方式将公钥插入KeyStore

时间:2018-01-23 19:57:52

标签: java ssl key-pair

我想生成密钥对并将公钥和私钥插入到不同的密钥库中,以便在SSL套接字连接中用作KeyStore和TrustStore。我使用KeyPairGenerator生成KeyPair,并且我已经使用java的keytool为链生成了签名证书。然后我可以将私钥插入KeyStore,如下所示:

PublicKey publicKey;
PrivateKey privateKey;

KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(null, "storepass".toCharArray());

keyStore.setKeyEntry("privatekey", privateKey, "keypass".toCharArray(), chain);

使用此密钥库,我可以为SSL连接创建KeyManager。但是要创建一个TrustManager,我需要将公钥存储到KeyStore中,所以我尝试将公钥存储在一个密钥库中:

PublicKey publicKey;

KeyStore trustStore = KeyStore.getInstance("JKS");
keyStore.load(null, "storepass".toCharArray());

trustStore.setKeyEntry("publickey", publicKey, "public".toCharArray(), chain);

这会返回错误:java.security.KeyStoreException: Cannot store non-PrivateKeys 所以我尝试使用setCertificateEntry(),但这不起作用,因为它是PublicKey对象,我需要Certificate。所以我的问题是,如何以编程方式将PublicKey存储在KeyStore中?使用keytool不是一种选择。

0 个答案:

没有答案