我正在尝试使用convert-keystore实用程序(https://code.google.com/p/zip-signer/downloads/detail?name=convert-keystore-1.2.zip&can=2&q=)将JKS密钥库转换为BKS密钥库。
执行命令
> java -jar convert-keystore-1.2.jar server.keystore.jks server.keystore.bks
我收到以下错误:
>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)
密钥库是通过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
这没有任何错误,并且能够在我的应用程序中使用此密钥库。
请指导。 我正在使用Java 1.6.45并拥有" java无限强度策略文件"正确的版本。密钥库也是在相同的java版本上创建的。
还在Java 1.7.55上尝试过这个过程。它会产生同样的错误。
答案 0 :(得分:3)
实际上你可以使用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:\个人\工作\ lib中\ BouncyCastle的\ bcprov-jdk15on-152.jar
答案 1 :(得分:0)
只需下载KeyStore Explorer并加载keytool提供或制作的密钥,然后进入菜单,然后选择tools-> type并选择bks
用于API <23的bks v1(如果您正在寻找用于Android的bks)
此过程无需使用keytool即可完成,只需使用KeyStore Explorer