JKS 到 BKS 密钥库

1 java ssl android keystore

我正在尝试使用 convert-keystore 实用程序将 JKS 密钥库转换为 BKS 密钥库(https://code.google.com/p/zip-signer/downloads/detail?name=convert-keystore-1.2.zip&can=2&q=)。

在执行命令时

> java -jar convert-keystore-1.2.jar server.keystore.jks server.keystore.bks
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

>java.security.KeyStoreException: java.lang.NullPointerException
    at org.bouncycastle.jce.provider.JDKKeyStore.engineSetKeyEntry(Unknown Source)
    at java.security.KeyStore.setKeyEntry(KeyStore.java:880)
    at kellinwood.keystore.Convert.main(Convert.java:89)
Run Code Online (Sandbox Code Playgroud)

密钥库是通过 Java 密钥库实用程序创建的:

keytool -genkey -alias myAlias -keyalg RSA -keysize 2048 -keystore server.keystore -validity 10000

CSR 是从这个密钥库生成的:

keytool -certreq -v -alias myAlias -file naavis_public.csr -keypass changeit -keystore server.keystore -storepass changeit

然后我从 Thawte 导入了证书:

keytool -import -trustcacerts -alias SSL -keystore server.keystore.jks -file ssl.crt

>keytool -import -trustcacerts -alias INTERMEDIATE -keystore server.keystore.jks -file intermediate.crt

>keytool -import -trustcacerts -alias ROOT -keystore server.keystore.jks -file root.crt
Run Code Online (Sandbox Code Playgroud)

这没有任何错误,并且能够在我的应用程序中使用这个密钥库。

请指导。我正在使用 Java 1.6.45 并拥有正确版本的“java 无限强度策略文件”。密钥库也是在相同的 Java 版本上创建的。

在 Java 1.7.55 上也试过这个过程。它产生相同的错误。

Pix*_*ech 6

其实你可以使用Oracle JDK提供的keytool。下面的命令可用于将 JKS 转换为 BKS。

keytool -importkeystore -srckeystore testkeys -srcstoretype JKS -srcstorepass passphrase -destkeystore testkeys.bks -deststoretype BKS -deststorepass password -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath C:\Personal\Work\lib\bouncycastle\b1k5-d -152.jar