我有一个非常简单的场景:
public class Main {
public static void main(String[] args) {
System.setProperty("javax.net.debug", "ssl");
System.setProperty("javax.net.ssl.trustStore", "H:/data/serverkeystore.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "somestuff");
try {
ServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
SSLServerSocket serverSocket = (SSLServerSocket) ssf.createServerSocket(1337);
... code goes on here ...
我是否评论该行并不重要
System.setProperty("javax.net.ssl.trustStorePassword", "somestuff");
出或者如果我使用它。在这个问题的答案中,很好地描述了密码的用途(即使那里缺少源信息),并且如果不给出密码,则无法验证 TrustStore 的完整性。因此,在我的示例代码中,如果取消注释该行,Java 将使用 TrustStore 而不检查其完整性。通过我自己的测试,我可以确定如果我输入错误的密码并使用代码(如上所示),则会出现错误消息(这是期望的结果)。我只是感到惊讶的是,可以省略密码,然后 Java 显然可以与未经检查的 TrustStore 一起使用。任何人都可以根据我的问题解释 TrustStore 的初始化例程吗?
正如问题中已经提到的,我使用自己的 TrustStore 密码,该密码与标准密码“changeit”不同。
jeck猫
相关分类