如何将.pfx文件转换为具有私钥的密钥库?

Ola*_*Ola 101 java certificate keytool jarsigner apk

我需要签署Android应用程序(.apk).
我有.pfx档案.我.cer通过Internet Explorer 将其转换为文件,然后转换.cer.keystore使用keytool.然后我尝试.apk与jarsigner 签约,但它说.keystore不满足私钥.

我做错了什么?

Mik*_*keD 249

使用JDK 1.6或更高版本

Justin在下面的评论中已经指出,单独的keytool能够使用以下命令执行此操作(尽管仅在JDK 1.6及更高版本中):

keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12 
-destkeystore clientcert.jks -deststoretype JKS
Run Code Online (Sandbox Code Playgroud)

使用JDK 1.5或更低版本

OpenSSL可以做到这一切.关于JGuru的答案是迄今为止我发现的最佳方法.

首先确保已安装OpenSSL.我已经安装了许多操作系统,就像我在Mac OS X中找到的那样.

以下两个命令将pfx文件转换为可以作为Java PKCS12密钥库打开的格式:

openssl pkcs12 -in mypfxfile.pfx -out mypemfile.pem
openssl pkcs12 -export -in mypemfile.pem -out mykeystore.p12 -name "MyCert"
Run Code Online (Sandbox Code Playgroud)

请注意,第二个命令中提供的名称是新密钥库中密钥的别名.

您可以使用Java keytool实用程序使用以下命令验证密钥库的内容:

keytool -v -list -keystore mykeystore.p12 -storetype pkcs12
Run Code Online (Sandbox Code Playgroud)

最后,如果需要,可以通过将上面创建的密钥库导入新的密钥库来将其转换为JKS密钥库:

keytool -importkeystore -srckeystore mykeystore.p12 -destkeystore clientcert.jks -srcstoretype pkcs12 -deststoretype JKS
Run Code Online (Sandbox Code Playgroud)

  • 不需要所有三个步骤,只需运行:keytool -importkeystore -srckeystore mykeystore.pxf -destkeystore clientcert.jks -srcstoretype pkcs12 -deststoretype JKS (26认同)
  • 请注意我在Justin之前一年以更简单的形式给出了答案. (2认同)

gjp*_*jpc 22

jarsigner可以使用您的pfx文件作为用于签名jar的密钥库.导出时,请确保您的pfx文件具有私钥和证书链.无需转换为其他格式.诀窍是获取您的pfx文件的别名:

 keytool -list -storetype pkcs12 -keystore your_pfx_file -v | grep Alias
Run Code Online (Sandbox Code Playgroud)

拥有别名后,签名很容易

jarsigner.exe -storetype pkcs12 -keystore pfx_file jar_file "your alias"
Run Code Online (Sandbox Code Playgroud)

以上两个命令将提示您输入在pfx export中指定的密码.如果要以明文形式挂出密码,请在-keystore开关之前使用-storepass开关

签名后,敬佩你的工作:

jarsigner.exe -verify -verbose -certs  yourjarfile
Run Code Online (Sandbox Code Playgroud)

  • +1 不必转换密钥库文件(我已经有足够的格式了!) (2认同)

kap*_*tan 18

我找到了这个页面,告诉你如何将PFX导入JKS(Java密钥库):

keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass PFX_P12_FILE -srcalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE -deststoretype jks -deststorepass PASSWORD -destalias ALIAS_NAME
Run Code Online (Sandbox Code Playgroud)

  • 这应该是完整的答案! (2认同)