我有一个SSL证书(从服务器的根开始的证书链),这似乎是好的。我可以在Windows和Windows上打开证书也可以使用Windows向导导入它。
但是当我尝试通过以下命令将其转换为密钥库时(使用BouncyCastle):
keytool -importcert -v -trustcacerts -file "test.crt" -alias ca -keystore "test.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-ext-jdk15on-1.46.jar" -storetype BKS -storepass testtest
我收到以下错误:
keytool error: java.lang.Exception: Input not an X.509 certificate
java.lang.Exception: Input not an X.509 certificate
at sun.security.tools.KeyTool.addTrustedCert(Unknown Source)
at sun.security.tools.KeyTool.doCommands(Unknown Source)
at sun.security.tools.KeyTool.run(Unknown Source)
at sun.security.tools.KeyTool.main(Unknown Source)
我正在开发一个Android应用程序,我需要通过https调用基于REST的API。
是否有基于网络的工具(或其他)通过我可以验证证书?
答案 0 :(得分:5)
看来你的test.crt不是X.509格式。通常,如果它是PEM编码的X.509证书,它将从以下行开始:
-----BEGIN CERTIFICATE----- MII...
或
-----BEGIN TRUSTED CERTIFICATE----- MII...
DER-endcoded X.509证书对您来说似乎是随机二进制数据,但您可以使用openssl
命令行解码此类DER编码文件:
openssl asn1parse -inform d -in test.crt -i
输出中的起始OID将告诉您它是否是X.509证书或其他类似PKCS#7包。