keytool的错误,当创建密钥库BKS:providerpath是不是合法的命令(keytool

2019-09-21 08:37发布

我想创建一个“BKS”使用密钥库密钥工具(使用的是Mac OS X终端应用程序)。 我下面的说明:
密钥工具错误:java.security.KeyStoreException:BKS未找到

这是我的用法:

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 ):

  1. 删除-providerpath中的选项keytool命令,
  2. 放置bcprov-jdk16-146.jar里面{$JAVA_HOME/lib/ext}文件夹
  3. 加入security.provider.3=org.bouncycastle.jce.provider.BouncyCastleProvider到java.security文件。

但它仍然失败了。

什么我可以做不同的任何想法创造一个BKS密钥库成功吗?

Answer 1:

这是许多年以来,但我尝试这一点。

答案是,你必须以错误的顺序的参数。 该-providerpath需要拿出的-providerclass参数之前

我希望帮助别人在将来寻找解决的办法。



Answer 2:

我从来没有能够使用keytool成功。 这是我做过什么来解决这个问题,而不是:我做了被蚀(靛蓝,SR2)创建的默认debug.keytool(一JKS类型的密钥库)的副本会自动在第一时间一个Android程序在Eclipse中运行,并二手Portecle(http://portecle.sourceforge.net/)将其转换为一个BKS类型的密钥库。 现在,这是棘手的部分:如果我现在在取代原有的使用debug.keytool的BKS版本,我在Eclipse中有一个“机器人包装错误”“java.io.IOException异常:无效的密钥库格式”每当我想尝试运行Android程序。 但是,如果我在默认目录中留下debug.keytool的原始版本JKS Eclipse的地方创造了它,然后我可以在Android程序/资源/原材料子文件夹中使用debug.keytool的BKS版本,并有Android开放它并认识它。 吉姆



Answer 3:

一个简单的替代方法是使用Portecle生成BKS:

  1. 下载所需要的Boucycastle提供商
  2. 在Portecle更换bcprov.jar安装目录(例如: C:\Program Files (x86)\Portecle\bcprov.jar )。 相同的命名是必需的。
  3. 重新启动Portecle并生成BKS信任。

更多的解释在这里 。



文章来源: keytool error when creating BKS keystore: providerpath is not a legal command