2010-05-05 122 views
1

虽然我熟悉HTTPS和SSL的概念,但最近我开始了一些开发,发现我有点困惑。使用带SSL和证书的HttpClient

需求是我编写了一个运行在连接到扫描器的机器上的小型Java应用程序。扫描文档时,将拾取文件并将文件(通常为PDF)通过互联网发送到我们的应用程序服务器,然后进行处理。我已经使用Apache Commons库和HTTPClient编写了应用程序。

第二个要求是通过SSL连接,需要证书。遵循HTTPclient页面的指导,我使用了贡献页面中的AuthSSLProtocolSocketFactory。

构造函数可以采用密钥库,密钥库密码,信任库和信任库密码。作为最初的测试,我们的DBA在我们的一个开发网络服务器上启用了SSL,并为我提供了一个.p12文件,当我导入到IE时允许我成功连接。

我在密钥库和信任库之间有点困惑,以及我需要使用keytool采取哪些步骤。我试图导入到P12密钥存储文件,但得到的错误:

keytool error: java.lang.Exception: Input not an X.509 certificate 

我跟着导入P12到Internet Explorer和出口为.cer,我就可以成功地导入到密钥库的建议。当我提供此作为AuthSSLProtocolSocketFactory的密钥库的说法,我得到一个毫无意义的errror,但如果我尝试它作为一个信任,好像它读取它不错,但最终我得到

Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate 

我不确定如果我错过了一些步骤,我误解了SSL和相互认证,或者这是服务器端的错误配置。

任何人都可以提供建议或指向我的资源,可能会帮助我解决这个问题吗?

回答

1

确保前后这些证书文件没有任何东西。

----- BEGIN CERTIFICATE -----

----- END CERTIFICATE -----