如何验证X.509证书格式?

5
我有一个SSL证书(从服务器根开始的证书链),似乎没有问题。我可以在Windows上打开证书,并使用Windows向导导入它。
但是当我尝试通过以下命令(使用BouncyCastle)将其转换为keystore时:
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。

有没有任何基于web的工具(或其他方式)可以验证证书?


发布你的代码片段或命令行会有所帮助。 - kroot
@kroot,我已经添加了命令,请您看一下? - Sourav
1个回答

8
看起来你的test.crt不是X.509格式。通常,如果它是PEM编码的X.509证书,它将以以下行开头:
-----BEGIN CERTIFICATE----- MII...
或者
-----BEGIN TRUSTED CERTIFICATE----- MII...
对于DER编码的X.509证书,它看起来像是随机的二进制数据,但你可以使用openssl命令行解码这些DER编码的文件:
openssl asn1parse -inform d -in test.crt -i
输出中的开始OID将告诉你它是否是X.509证书,还是像PKCS#7包一样的其他内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接