4

我有一个似乎没问题的 SSL 证书(从服务器根目录开始的证书链)。我可以在 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。

是否有任何基于网络的工具(或其他)通过我可以验证证书?

4

1 回答 1

6

看来您的 test.crt 不是 X.509 格式。通常,如果它是 PEM 编码的 X.509 证书,它将以以下行开头:

-----开始证书-----
工信部...

或者

-----开始受信任的证书-----
工信部...

DER 编码的 X.509 证书对您来说似乎是随机的二进制数据,但您可以使用openssl命令行解码此类 DER 编码的文件:

openssl asn1parse -inform d -in test.crt -i

输出中的起始 OID 将告诉您它是 X.509 证书还是其他类似 PKCS#7 包的东西。

于 2013-05-26T18:52:42.643 回答