0

谁能告诉我我们是否必须创建 my.keystore 文件或者它将被创建。当我在我的jsp文件所在的同一目录(webapp目录)中创建这个文件并且我在我的jsp文件中使用这个代码时。

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
4

2 回答 2

0

我建议将密钥库添加到类路径,然后通过

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

将密钥库放在 webapp 下而不是 WEB-INF 下是不安全的,因为任何人都可以下载它。此外,new File()当使用相对文件路径时,通过查找 Java 进程的工作目录来加载文件(请参阅JavaDoc)。这很可能在您正在使用的 Servlet 容器的目录层次结构下的某个位置。

于 2011-07-01T22:35:11.217 回答
0

除非您的服务器需要客户端身份验证,否则您根本不需要密钥库。可以?

于 2011-07-02T08:16:32.857 回答