2011-03-29 230 views
-1

我們正在與遠程服務器通信以驗證用戶身份。 Web服務器使用Verisign簽署的SSL證書。該數據是通過HTTPS交換,我們已經配置了ThreadSafeClientConnManager使用JVM默認SSL廠:SSL證書升級導致問題

SchemeRegistry schemeRegistry = new SchemeRegistry(); 
schemeRegistry.register(new Scheme("http", PlainSocketFactory 
       .getSocketFactory(), 80)); 
schemeRegistry.register(new Scheme("https", SSLSocketFactory 
       .getSocketFactory(), 443)); 
ClientConnectionManager manager = new ThreadSafeClientConnManager(
       sDefaultHttpParams, schemeRegistry); 

近日,在網絡服務器上更新他們的SSL證書,這已經引起了我們的應用突破。我們能做些什麼來避免這個問題?

請幫忙。

+0

你還沒有發佈任何需要幫助的細節。什麼,確切地說,你的意思是「休息」? – bmargulies 2011-03-29 00:39:43

+0

我們的客戶端無法與服務器建立會話並登錄用戶。 – Samuh 2011-03-29 00:44:09

+0

獲取異常?什麼例外? – bmargulies 2011-03-29 00:45:03

回答

2

沒有什麼事情可以真正做到「避免」問題,因爲它不是真正的問題,它是SSL證書和權威信任的核心「功能」。

這是一個相當廣泛的問題,更詳細的信息可以幫助查明確切的問題,但這裏是前兩項要檢查的問題。

  1. 什麼CA他們升級他們的SSL證書使用?它是否自簽名?
    如果該站點已升級爲使用SSL證書或使用非標準根證書頒發機構,那麼您需要使用keytool導入特定的SSL證書,以告訴本地JVM該證書是受信任的。如果他們正在使用新權限(並且您的組織信任該root權限),那麼您可能需要導入新的根證書頒發機構,大多數專業默認情況下都會受支持,但有時我不得不導入新的根證書頒發機構。

http://download.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html

  1. 確保他們的證書是正確的鏈接。我看到的第二個最常見的問題是由站點管理員進行證書鏈接(安裝)。不幸的是,IE/Mozilla/Java ...都使用不同的驗證機制來確保SSL證書是「有效的」,我發現許多網站管理員不知道如何正確鏈接證書到其網站上的相應權威機構。您應該在瀏覽器中打開證書(我將以多個方式打開證書)並檢查信任鏈以確保網站上的證書鏈一直備份到期望的根CA. (這也是你如何檢查#1的根CA)。如果它沒有信任鏈,那麼JVM SSL驗證將失敗(而IE瀏覽器在老版本的IE中會看到Internet Explorer調用非鏈接證書「有效」)。
+2

同時檢查正在使用的信任庫會很重要。默認信任庫是否被覆蓋或編輯?它由外部服務器使用的證書是自簽名的(甚至是過期的),您可以使用Web上的InstallCert java程序導入證書。 – hooknc 2011-03-29 02:53:38

+0

感謝@ hooknc的信息! – Samuh 2011-03-31 19:11:02