我正在尝试了解 this code 中发生了什么.
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 数据。为什么不使用 null
作为 InputStream 参数和空字符串作为密码字段来加载它?
然后当这个空的 KeyStore 被传递给 SSLSocketFactory 构造函数时会发生什么?这样操作的结果是什么?
或者——这只是一个示例,在实际应用程序中,您必须实际引用现有的 keystore 文件/密码?
最佳答案
此示例试图向您展示如何加载您自己的信任库。要使此示例正常运行,您需要在当前目录中有一个名为“my.keystore”的文件,并且 keystore 的密码是“nopassword”。
请注意 new File("my.keystore")
不一定会创建新文件。它只是创建一个指向路径的文件对象。
关于java - keystore 、HttpClient 和 HTTPS : Can someone explain this code to me?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2741457/