2010-05-05 125 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 -----