我想了解this code中發生了什麼。KeyStore,HttpClient和HTTPS:有人可以向我解釋這段代碼嗎?
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
FileInputStream instream = new FileInputStream(new File("my.keystore"));
try {
trustStore.load(instream, "nopassword".toCharArray());
} finally {
instream.close();
}
SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);
Scheme sch = new Scheme("https", socketFactory, 443);
httpclient.getConnectionManager().getSchemeRegistry().register(sch);
我的問題:
trustStore.load(instream, "nopassword".toCharArray());
是做什麼的到底是什麼?從閱讀文檔load()
將使用一些任意的「nopassword」從輸入流(這只是我們剛剛創建的一個空文件)加載KeyStore數據。爲什麼不加載作爲InputStream參數的null
以及作爲密碼字段的空字符串?
然後當這個空的KeyStore被傳遞給SSLSocketFactory構造函數時發生了什麼?這種手術的結果是什麼?
或者 - 這僅僅是一個例子,在真實的應用程序中,您將不得不實際引用現有密鑰庫文件/密碼?
實際上,'new File()'不會創建一個新文件。如果文件不存在,那麼FileInputStream會立即拋出一個異常。代碼暗示您事先創建了一個密鑰存儲庫,給它一個「nopassword」密碼,然後導入一些您信任的SSL證書。然後,您將密鑰庫與您的應用程序一起打包,以便用於驗證證書。 – 2011-03-04 01:01:59