java - keystore 、HttpClient 和 HTTPS : Can someone explain this code to me?

标签 java https httpclient keystore

我正在尝试了解 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/

相关文章:

java - 在两个不同的进程上运行两个 Activity

Java 字符串合并排序仅适用于最多四个元素的数组列表

java - Tomcat 上的 HTTPClient

Android HTTPPost 返回错误 "Method not allowed."

java - Android开发-HttpClient异常

java - 如何验证端口是否开放

java - Spring Boot + Spring Batch + @StepScope = 没有代理 Bean?

https - 如何获取URL重写HTTP到HTTP和非WWW到WWW工作

security - 当IE提示 “Only secure content is displayed”时,我能知道不安全内容的网址吗?

java - 如何在没有证书身份验证或主机名验证的情况下使用 Java 中的 HttpClient 发出 HTTPS 请求?