2011-07-01 7 views
0

my.keystoreファイルを作成する必要があるかどうかは誰でも教えてください。そして、私がjspファイルと同じディレクトリ(webappディレクトリ)にこのファイルを作成し、私のJSPファイルでこのコードを使用しています。ClientCustomSSL with 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) 

だだからここで私は、このファイルを置く必要があります。これは、ファイルの両方のパス、

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

答えて

0

は、私はクラスパスにキーストアを追加することをお勧めして、Webアプリケーションの下にキーストアを置く

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

を経由して、それをロードしているJSPファイルとmy.keystoreですWEB-INFではなく、誰もがそれをダウンロードできるので安全ではありません。また、​​を介してファイルをロードすると、相対ファイルパスが使用されているときに、Javaプロセスの作業ディレクトリが検索されます(JavaDocを参照)。これはおそらく、使用しているサーブレットコンテナのディレクトリ階層のどこかにあります。

+0

私はmy.keystoreという名前の空のファイルを作成しました。それは正しい? – ferhan

+0

'trustStore.load'の呼び出しでロードする予定の場合は、有効なJavaキーストアが必要です。 – laz

+0

私はそれを行うことができます..私は実際に理解していない.. :( – ferhan

0

サーバーがクライアント認証を要求しない限り、キーストアはまったく必要ありません。それは?

関連する問題