2013-02-22 130 views
0

我有一臺服務器使用自簽名證書來爲我的測試客戶提供https連接。交換可信任證書的自簽名證書?

我的客戶端應用程序是用Java編寫的,我是有它接受自簽名的證書,像這樣:

import org.apache.http.conn.ssl.SSLSocketFactory; 
import org.apache.http.impl.client.DefaultHttpClient; 

SSLSocketFactory factory = new SSLSocketFactory(myTrustedStore); 

DefaultHttpClient client = new DefaultHttpClient(); 
client.getConnectionManager().getSchemeRegistry() 
    .register(new Scheme("https", factory, 456)); 

現在,我擁有一個值得信賴的第三方供應商適當的SSL證書。

如果我換證書,將連接上述失敗?因爲我使用上面的SSLSocketFactory顯式初始化,客戶端是否會拒絕服務器證書(這將是一個真正的信任證書?)。

只是想知道如果我必須要改變上面的代碼,並有我的測試更新自己的客戶端應用程序,或者將連接只是透明地工作他們無需更新?

感謝

-----跟進------

我受夠了 '真正的' 證書嘗試。我不得不使用自簽名證書的代碼不起作用。所以在他們使用真正的證書之前,我必須在客戶端放棄上面的代碼。

回答

0

如果客戶接受了自簽名的證書,會出現使用正確validable信任的證書沒有問題。

如果有問題,你仍然可以手動導入新的證書到您的trustedStore。你的代碼不應該受到影響。

+0

喜耶同一個問題 - 這樣的客戶端代碼並不需要進行修改,然後?它會接受新的可信證書,即使我正在使用明確的自簽證書初始化連接。 – user1219278 2013-02-22 15:30:09

+0

**「您的代碼不應受到影響。」** - 不,您的代碼正常。如果失敗,您可能需要導入新的證書,但是 - 因爲您需要使用此代碼進行升級 - 您不應該更改它。 – gaborsch 2013-02-22 15:35:46

+0

好的,謝謝我會給它一個鏡頭並報告回來。 – user291701 2013-02-22 16:27:20

0

我相信,現在你有一個適當的證書,就可以免去很多你的代碼。實際上,DefaultHttpClient現在應該可以工作。

import org.apache.http.impl.client.DefaultHttpClient; 

DefaultHttpClient client = new DefaultHttpClient(); 

您不再需要可信的密鑰存儲,因爲第三方將是您值得信賴的密鑰存儲現在。 DefaultHttpClient應該自動執行此操作。

+0

當然,我的問題是針對測試人員的 - 考慮到它仍在使用自簽名證書進行初始化,發佈的原始代碼是否會接受可信證書而不作任何修改? – user1219278 2013-02-22 15:27:28

+0

啊我看過了,那我不太確定。您的證書將不在myTrustedStore中。如果它不在受信任的商店中,它可能會默認爲外部商店,但我不確定。 正如@GaborSch在下面所說,如果出現問題,請將其添加到您的可信密鑰庫中進行臨時修復。 – mjshaw 2013-02-22 15:29:35

+0

你是對的,但可能在測試/階段/ UAT實例,他們仍然需要舊的代碼... – gaborsch 2013-02-22 15:30:34