"错版密钥存储&QUOT的;错误。我怎样才能创建一个版本= 1密钥库证书?密钥、创建一个、证书、错误

2023-09-06 03:18:58 作者:二师兄你就是大坏蛋i

我无法使用SSL,因为我得到了下面的错误与我的密钥库(自我创造和自我签名使用每密钥工具:的 http://developer.android.com/tool​​s/publishing/app-signing.html ):

  

08-14 20:55:23.044:W / System.err的(5430):java.io.IOException异常:错误   版本的密钥存储区。 08-14 20:55:23.060:W / System.err的(5430):在   org.bouncycastle.jce.provider.JDKKeyStore.engineLoad(JDKKeyStore.java:812)   ......

甩在了 JDKKeyStore.java 类中的错误在以下code出现了:

  

块引用   从JDKKeyStore.java:   如果(版本!= STORE_VERSION)           {               如果(版本!= 0)               {                   抛出新的IOException异常(错版密钥存储的。);               }           }

     

块引用

在这种情况下STORE_VERSION = 1,和我的版本= 3根据读出由我已创建的密钥库保持的证书的细节。我不知道如何生成一张包含= 1证书密钥库。

我发现这个答案有帮助: 错版密钥库时做HTTPS调用

但是它要求使用下列参数创建密钥库:

  

-storetype BKS   -provider org.bouncycastle.jce.provider.BouncyCastleProvider   -providerpath /path/to/bouncycastle.jar

然而,当我尝试创建密钥工具(使用Mac的终端应用程序)使用这些参数:

  

密钥工具-genkeypair -v -alias androiddebugkey -keyalg RSA -keysize   2048 -validity 10000 -keypass安卓-keystore   /Users/djames/dropbox/bc146keystore/debug.keystore -storepass机器人   -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath /用户/ djames /下拉框/ bc146keystore /

(其中/用户/ djames /下拉框/ bc146keystore /是路径充气城堡的jar:bcprov-jdk16-146.jar)

我收到以下错误:

  

keytool的错误:java.lang.RuntimeException的:用法错误,providerpath   是不是合法的命令了java.lang.RuntimeException:用法错误,   ?providerpath是不是一个合法的命令   sun.security.tools.KeyTool.parseArgs(KeyTool.java:375)在   sun.security.tools.KeyTool.run(KeyTool.java:171)在   sun.security.tools.KeyTool.main(KeyTool.java:166)

我不明白这是什么告诉我。如果我使用:密钥工具-help它告诉我,以下是有效的选项为-genkeypair选项:

  

-genkeypair [-v] [受保护的]          [-alias]          [-keyalg] [-keysize]          [-sigalg] [-dname]          [-validity] [-keypass]          [-keystore] [-storepass]          [-storetype] [-providerName]          [-providerclass [-providerarg] ...          [-providerpath]

但在Oracle文档Java版本6,我使用 ( http://docs.oracle.com/javase/ 6 /文档/技术说明/工具/的Solaris / keytool.html ) 它告诉我,这些都是选项:

  

-genkeypair {-alias别名} {-keyalg keyalg} {-keysize密钥大小} {-sigalg sigalg} [-dname DNAME] [-keypass的keypass] {-validity valDays}   {-storetype的storetype} {-keystore密钥库} [-storepass Storepass用于]   {-providerClass provider_class_name {-providerArg provider_arg}} {} -v   {-protected} {} -Jjavaoption

不包括 -providerpath选项。为什么不一致? (如果我不使用-providerpath选项,然后我得到一个未知的类异常的选项: - providerclass org.bouncycastle.jce.provider.BouncyCastleProvider .. 。)

当我谷歌:密钥工具-providerpath 我得到什么有用的解决这个问题。

我不知道如何解决我的密钥库版本的问题不解决我的密钥工具的问题。任何建议AP preciated。

吉姆

 (的Mac OSX 10.6.8如果相关)
 

解决方案

我能够闯过这个问题,密钥库的版本。请参见:keytool创建错误时BKS密钥库:providerpath不

一个合法的命令

I am having trouble using SSL, as I am getting the following error related to my keystore (self-created and self-signed using keytool per: http://developer.android.com/tools/publishing/app-signing.html):

08-14 20:55:23.044: W/System.err(5430): java.io.IOException: Wrong version of key store. 08-14 20:55:23.060: W/System.err(5430): at org.bouncycastle.jce.provider.JDKKeyStore.engineLoad(JDKKeyStore.java:812) ...

The error thrown in the JDKKeyStore.java class arises in the following code:

Blockquote From JDKKeyStore.java: if (version != STORE_VERSION) { if (version != 0) { throw new IOException("Wrong version of key store."); } }

Blockquote

In this case STORE_VERSION = 1, and my version=3 based on reading the details of the certificate held by the keystore I have created. I do not know how to generate a keystore containing a version=1 certificate.

I found this answer helpful: wrong version keystore when doing https call

however it calls for creating the keystore using the following parameters:

-storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath /path/to/bouncycastle.jar

However, when I try to create the keytool (using the terminal app on Mac) using these parameters:

keytool -genkeypair -v -alias androiddebugkey -keyalg RSA -keysize 2048 -validity 10000 -keypass android -keystore /Users/djames/dropbox/bc146keystore/debug.keystore -storepass android -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider –providerpath /Users/djames/dropbox/bc146keystore/

(where /Users/djames/dropbox/bc146keystore/ is the path to the bouncy castle jar: bcprov-jdk16-146.jar)

I get the following error:

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) at sun.security.tools.KeyTool.run(KeyTool.java:171) at sun.security.tools.KeyTool.main(KeyTool.java:166)

I do not understand what this is telling me. If I use: keytool -help it tells me that the following are valid options for the -genkeypair option:

-genkeypair [-v] [-protected] [-alias ] [-keyalg ] [-keysize ] [-sigalg ] [-dname ] [-validity ] [-keypass ] [-keystore ] [-storepass ] [-storetype ] [-providername ] [-providerclass [-providerarg ]] ... [-providerpath ]

But in the Oracle docs java version 6 that I am using (http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html) it tells me that these are the options:

-genkeypair {-alias alias} {-keyalg keyalg} {-keysize keysize} {-sigalg sigalg} [-dname dname] [-keypass keypass] {-validity valDays} {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}

which does not include the -providerpath option. Why the discordance? (If I do not use the -providerpath option, then I get an unknown class exception at the option: "-providerclass org.bouncycastle.jce.provider.BouncyCastleProvider"...)

When I google: keytool -providerpath I get nothing helpful to resolve this.

I am not sure how to solve my keystore version problem without solving my keytool problem. Any suggestions appreciated.

Jim

(Mac OSX 10.6.8 if relevant)

解决方案

I was able to get past this problem with the version of keystore. see: keytool error when creating BKS keystore: providerpath is not a legal command