2012-01-23 137 views
2

我試圖通過HTTPS與服務器進行身份驗證。我在握手方面遇到問題。我認爲這是由於當我在瀏覽器中訪問URL時出現一個彈出框。如果我取消了,我可以轉到一個允許我再次登錄的表單。服務器安全性是TAM。通過HTTPS的Java身份驗證

它實際上在我遇到問題的開始。當我嘗試運行此代碼:

 HttpResponse response = httpclient.execute(httpget); 

我得到的陳述錯誤IOExceptionjavax.net.ssl.SSLPeerUnverifiedException: peer not authenticated。我使用的示例代碼來自Apache HTTPClient文檔。我試圖也使用內置的java身份驗證方法,但我握手時遇到其他問題,稱證書不可信。

無論如何,我現在很困難,這是令人沮喪的,因爲我認爲這種東西應該足夠基本。

那麼,有人可以指導我通過HTTPS進行身份驗證的示例代碼嗎?

謝謝。

編輯: 我想補充另一個錯誤使用時,內置的Java HTTP認證,有關證書獲取:

javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.g: PKIX path building failed: 
java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: 
java.security.cert.CertPathValidatorException: The certificate issued by CN=XXX Internal Root CA, O=XXX Corporation, C=US is not trusted; internal cause is: 
java.security.cert.CertPathValidatorException: Certificate chaining error 

回答

0

這裏的問題是Windows。或者更具體地說,WinInet API,顯然。

我可以創建一個自定義TrustManager接受所有證書,它可以很好地連接。此外,如果我嘗試我的代碼沒有在Linux上的黑客攻擊,那麼它工作正常。所以無論Windows處理密鑰庫的方式是否給我帶來了問題。

0

看來你是在JVM密鑰庫丟失的服務器SSL證書,則需要使用keytool導入證書。這裏有一個link關於怎麼做。這裏是另一個link(即使它是Gmail,你可能會發現有用的步驟)

+0

我已經到我的瀏覽器的網站,並找到了證書。我已經下載它並使用keytool導入它,但它仍然給我同樣的錯誤。我使用http auth的缺省java方法獲得'證書鏈接錯誤',並且使用apache java auth獲得'peer not authenticated'。有任何想法嗎? – eoinzy