当前位置: 首页 > 知识库问答 >
问题:

创建BKS密钥库时出现keytool错误:providerpath不是合法命令

司徒茂实
2023-03-14

我正在尝试使用keytool(使用Mac OS X上的终端应用程序)创建“bks”密钥库。我正在遵循keytool错误:java中的说明。安全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)

我已经看到了无数Web帖子(包括上面的帖子)中推荐的-提供者路径选项,当我运行keytools-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选项

但还是失败了。

关于我可以采取哪些不同的措施来成功创建BKS密钥库,有什么想法吗?

共有3个答案

邵刚洁
2023-03-14

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

  1. 下载所需的Boucycastle提供程序

这里有更多解释。

左丘成天
2023-03-14

我从来没能用Keytool成功。这就是我解决问题的方法:我复制了默认调试。第一次在Eclipse中运行android程序时,Eclipse(Indigo,SR2)自动创建了keytool(一个JKS类型的密钥库),并使用了Portecle(http://portecle.sourceforge.net/)将其转换为BKS类型密钥库。现在这是一个棘手的部分:如果我现在使用的是BKS版本的debug。keytool取代了原来的版本,每当我尝试运行Android程序时,我都会在Eclipse“java.io.IOException:无效的密钥库格式”中遇到一个“Android打包错误”。然而,如果我离开了调试的原始JKS版本。keytool位于Eclipse创建它的默认目录中,然后我可以使用BKS版本的调试。在Android程序的/resources/raw子文件夹中输入keytool,让Android打开并识别它。吉姆

颜实
2023-03-14

已经很多年了,但我也在尝试。

答案是您的参数顺序错误。-Providerpath需要在-Providerclass参数之前。

我希望这对将来寻找解决方案的人有所帮助。

 类似资料:
  • 我试图转换JKS密钥存储到BKS密钥存储使用转换密钥存储实用程序(https://code.google.com/p/zip-signer/downloads/detail?name=convert-keystore-1.2.zip 在执行命令时 我得到以下错误: 密钥存储是通过Java密钥存储实用程序创建的: keytool-genkey-alias myAlias-keyalg RSA-key

  • 问题内容: 我尝试创建一个新的自我认证的密钥库文件 我使用的命令是: 但我总是收到这个烦人的错误: 我不明白为什么会收到此错误。上面的命令应该创建一个新的密钥库,所以为什么它抱怨不存在的密钥库? 问题答案: 生成密钥对(和新的密钥库)必须作为为该密钥创建自签名证书的单独操作来完成。 即

  • 我有一个由openssl以以下方式生成的密钥对 openssl genrsa-out private_key.pem 2048 所以我的问题是如何使用KeyTool将现有密钥导入到BKS密钥库中? 谢谢

  • 问题内容: 据我了解,密钥库通常会保存私钥/公钥,而信任库通常只保存公钥(并且代表您打算与之通信的受信任方的列表)。好吧,这是我的第一个假设,因此,如果这不正确,那么我可能起步并不顺利… 我很想了解使用keytool时如何/何时区分商店。 因此,到目前为止,我已经使用 这将创建我的keystore.ks文件。我回答了我是否信任bob的问题,但是我不清楚这是否创建了密钥库文件或信任库文件?我可以将我

  • 当使用keytool生成keystore时,我收到错误非法选项:genkeypair。但是当我看到帮助时,genkeypair是可用的选项。我在指挥上做错了什么? C:\program files\java\jdk1.7.0_51\bin>keytool.exe-genkeypair-alias orbis-storetype pkcs12-keyalg rsa-keysize 2048-keys

  • 在Azure密钥库策略中,我想添加ADF。下面给出了命令(从管道执行)。但在创建后,它显示为“代表”文本的“复合身份”,它不起作用。当我手动将ADF添加到策略中时,它显示为'application',并且它可以工作。如何使powershell创建“应用程序”标识? 完整脚本