2013-04-05 175 views
1

我有一个SSL证书(证书链从服务器的根开始)似乎是好的。我可以在窗口上打开证书&也可以使用Windows向导导入它。如何验证X.509证书格式?

但是当我尝试把它转换成一个密钥库通过以下命令(使用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。

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

+0

发布您的代码片段或命令行将有所帮助。 – kroot 2013-04-07 01:32:04

+0

@kroot我已经添加了该命令,你可以看一下吗? – Sourav 2013-04-08 09:30:50

回答

2

看起来你的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,如果它是一个n X.509证书或其他类似PKCS#7包的东西。