创建BKS密钥库时出现keytool错误:providerpath不是合法命令 [英] keytool error when creating BKS keystore: providerpath is not a legal command

查看:232
本文介绍了创建BKS密钥库时出现keytool错误:providerpath不是合法命令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用keytool(在Mac OS X上使用终端应用程序)创建"bks"密钥库.我正在按照以下说明进行操作:
​​ keytool错误:java.security.KeyStoreException:未找到BKS

I am trying to create a "bks" keystore using keytool (using terminal app on Mac OS X). I am following the instructions in:
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)

我已经在无数的Web帖子(包括上述文章)中看到了推荐的-provider path选项,当我运行keytool -help时,它确认语法是合法的:

I have seen the -provider path option recommended in countless web posts (including the one above) and when I run keytool -help it confirms the syntax is legal:

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

I also tried the following alternative (per http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html):

  1. 删除keytool命令的-providerpath选项,
  2. bcprov-jdk16-146.jar放置在{$JAVA_HOME/lib/ext}文件夹内
  3. security.provider.3=org.bouncycastle.jce.provider.BouncyCastleProvider添加到java.security文件.
  1. deleting the -providerpath option of the keytool command,
  2. placing the bcprov-jdk16-146.jar inside the {$JAVA_HOME/lib/ext} folder
  3. adding security.provider.3=org.bouncycastle.jce.provider.BouncyCastleProvider to the java.security file.

但是它仍然失败.

关于成功创建BKS密钥库的其他方法,我有何想法?

Any ideas on what I can do differently to succeed in creating a BKS keystore?

推荐答案

我从未能够成功使用Keytool.这是我用来解决问题的方法:我制作了默认debug.keytool(JKS类型的密钥库)的副本,该文件由Eclipse(Indigo,SR2)在第一次在Eclipse中运行android程序时自动创建,并且使用Portecle(http://portecle.sourceforge.net/)将其转换为BKS类型的密钥库.现在,这是棘手的部分:如果我现在使用BKS版本的debug.keytool代替原始版本,则每当我尝试执行以下操作时,都会在Eclipse中出现"Android打包错误""java.io.IOException:无效的密钥库格式"运行android程序.但是,如果我将原始JKS版本的debug.keytool保留在Eclipse创建它的默认目录中,那么我可以在Android程序的/resources/raw子文件夹中使用debug.keytool的BKS版本,并让Android打开并识别它.吉姆

I was never able to succeed with Keytool. This is what I did to solve the problem instead: I made a copy of the default debug.keytool (a JKS type keystore) that was created by Eclipse (Indigo, SR2) automatically the first time an android program is run in Eclipse, and used Portecle (http://portecle.sourceforge.net/) to convert this to a BKS type keystore. Now this is the tricky part: If I now used the BKS version of debug.keytool in place of the original, I got an "Android packaging error" in Eclipse "java.io.IOException: Invalid keystore format" whenever I would try to run the android program. However, if I left the original JKS version of debug.keytool in the default directory where Eclipse created it, then I could use the BKS version of the debug.keytool in the Android program's /resources/raw subfolder and have Android open it and recognize it. Jim

这篇关于创建BKS密钥库时出现keytool错误:providerpath不是合法命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆