2011-07-01 31 views
0

任何人都可以告訴我,我們是否必須創建my.keystore文件或將創建它。當我在我的jsp文件所在的同一目錄(webapp目錄)中創建此文件時,我在我的jsp文件中使用了此代碼。ClientCustomSSL與HTTP 4.1.1

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); 

而且我得到了錯誤

java.io.FileNotFoundException: my.keystore (The system cannot find the file spec 
ified) 

所以我應該在哪裏把這個文件。這是兩個文件的路徑,即JSP文件和my.keystore

C:\workspace\search-ui\search-ui\src\main\webapp 

回答

0

我會建議將密鑰存儲到類路徑中,然後通過

InputStream instream = Thread.currentThread().getContextClassLoader().getResourceAsStream("my.keystore"); 

加載下的webapp把密鑰庫但不在WEB-INF下是不安全的,因爲任何人都可以下載它。另外,使用相對文件路徑時,通過​​加載文件將在Java進程的工作目錄中查找(請參閱JavaDoc)。這很可能在您所使用的Servlet容器的目錄層次結構下的某處。

+0

所以我創建了名爲my.keystore的空白文件。是對的嗎? – ferhan

+0

如果你打算把它加載到'trustStore.load',它將需要包含一個有效的Java密鑰庫。 – laz

+0

所以我怎麼能做到這一點..我實際上不明白.. :( – ferhan

0

除非您的服務器需要客戶端身份驗證,否則根本不需要密鑰庫。可以?