我正在尝试对Intuit API Explorer进行身份验证,以便更好地熟悉客户数据(AggCat)API。
我输入了消费者密钥/密钥,SAML ID,用户ID以及我上传的原始.crt证书。我收到错误:
The given certificate file is not supported. Please provide valid PEM certificate file.
我不明白这个错误,因为据我所知,.crt文件是PEM编码的。
然而,我进入了“创建X.509键”页面:
并按照“生成PEM文件”底部的说明进行操作。我能够通过第1步。(将jks存储转换为p12格式),但在尝试运行第2步时出现以下错误:
$ openssl pkcs12 -in keystore.p12 -nocerts -out cert.pem
MAC verified OK
Error outputting keys and certificates
139679448614560:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:539:
139679448614560:error:23077074:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 cipherfinal error:p12_decr.c:104:
139679448614560:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error:p12_decr.c:130:
我在ubuntu-12.04 LTS上使用jdk-1.7.0_17和openssl-1.0.1。
感谢您的帮助。
答案 0 :(得分:0)
找到它,停止寻找!
问题源于PKCS12格式不支持存储文件及其中的任何密钥的单独密码。存储文件和其中的密钥都必须使用相同的密码加密。
所以最简单的方法是再次完成这个过程,并在使用keytool生成初始私钥和密钥库的步骤中:
keytool -genkey -alias myapp -validity 1095 -keyalg RSA -keystore keystore.jks
确保密钥库(storepass)和私钥(keypass)使用相同的密码。
作为替代方案,如果您真的必须/想要在该步骤中为密钥库和密钥使用单独的密码,那么在创建PEM的初始步骤中:
keytool -importkeystore -srckeystore [MY_KEYSTORE.jks]
-destkeystore [MY_FILE.p12]
-deststoretype PKCS12
-deststorepass [PASSWORD_PKCS12] change this to [KEYPASS]
-srcstorepass [PASSWORD_JKS]
将-srcstorepass设置为密钥库(storepass)的密码,但设置为 将PKCS12文件的-deststorepass转换为通过上面的keytool -genkey命令创建密钥/密钥库时使用的私钥密码(keypass)。
我没有测试过这个替代方案,但它也应该可以正常工作,因为PCKS12商店和密钥最终都会使用相同的密码。