我正在尝试使用 keytool(在 Mac OS X 上使用终端应用程序)创建一个“bks” keystore 。我正在按照以下说明进行操作:
keytool error: java.security.KeyStoreException: BKS not found
这是我的用法:
keytool -genkeypair -v -alias androiddebugkey -keyalg RSA -keysize 2048 -validity 10000 -keypass android -keystore /Users/djames/dropbox/bc146keystore/debug.keystore -storepass android -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider –providerpath /Users/djames/dropbox/bc146keystore/bcprov-jdk16-146.jar -dname "CN=Android Debug, OU=Android, O=Android, L=Whitefish, S=MT, C=US"
我收到以下错误:
keytool error: java.lang.RuntimeException: Usage error, ?providerpath is not a legal command
java.lang.RuntimeException: Usage error, ?providerpath is not a legal command
at sun.security.tools.KeyTool.parseArgs(KeyTool.java:375)
我在无数网络帖子(包括上面的帖子)中看到了推荐的 -provider path
选项,当我运行 keytool -help
时,它确认语法是合法的:
keytool usage: ...
-genkeypair [-v] [-protected]
[-alias <alias>]
[-keyalg <keyalg>] [-keysize <keysize>]
[-sigalg <sigalg>] [-dname <dname>]
[-validity <valDays>] [-keypass <keypass>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-providername <name>]
[-providerclass <provider_class_name> [-providerarg <arg>]] ...
[-providerpath <pathlist>]
我还尝试了以下替代方案(根据 http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html ):
- 删除
keytool
命令的-providerpath
选项, - 将
bcprov-jdk16-146.jar
放入{$JAVA_HOME/lib/ext}
文件夹 - 将
security.provider.3=org.bouncycaSTLe.jce.provider.BouncyCaSTLeProvider
添加到 java.security 文件。
但还是失败了。
关于我可以做些什么来成功创建 BKS keystore ,有什么想法吗?
最佳答案
很多年过去了,但我也在尝试。
答案是您的参数顺序错误。 -providerpath 需要位于 -providerclass 参数之前。
我希望这对将来寻找解决方案的人有所帮助。
关于bouncycaSTLe - 创建 BKS keystore 时出现 keytool 错误 : providerpath is not a legal command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12015512/