有人可以告诉我是否必须创建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
答案 0 :(得分:0)
我建议将密钥库添加到类路径中,然后通过
加载它InputStream instream = Thread.currentThread().getContextClassLoader().getResourceAsStream("my.keystore");
将密钥库置于webapp下但不在WEB-INF下是不安全的,因为任何人都可以下载它。此外,当使用相对文件路径时,通过new File()
加载文件会查找Java进程的工作目录(请参阅JavaDoc)。这很可能位于您正在使用的Servlet容器的目录层次结构下。
答案 1 :(得分:0)
除非您的服务器需要客户端身份验证,否则根本不需要密钥库。是吗?