Java 解释代码-SSL

Java 解释代码-SSL,java,ssl,keystore,Java,Ssl,Keystore,请任何人解释一下下面的代码 Keystore.load执行什么操作? 为什么使用KeyManagerFactory? 我需要务实的解决方案 System.setProperty("1", "/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre"); String jrehome = System.getProperty("1"); String path = jrehome + "/" + "lib" + "/"

请任何人解释一下下面的代码

Keystore.load执行什么操作? 为什么使用KeyManagerFactory? 我需要务实的解决方案

System.setProperty("1", "/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre");

String jrehome = System.getProperty("1");
String path = jrehome + "/" + "lib" + "/" + "security" + "/" + "cacerts";
char[] ksPass= "changeit".toCharArray();

try {
    KeyStore ks = KeyStore.getInstance("JKS"); // <- HERE
    System.out.println(ks.toString());
    ks.load(new FileInputStream(path), ksPass);

    KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
    kmf.init(ks, ksPass);

    TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
    System.out.println(ks.getCertificate("SunX509"));
    tmf.init(ks);

    SSLContext sc = SSLContext.getInstance("TLS");
    sc.getClientSessionContext().setSessionCacheSize(1);
    sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
    SSLServerSocketFactory ssf = sc.getServerSocketFactory();

    SSLServerSocket s = (SSLServerSocket) ssf.createServerSocket(8888); // <-- HERE

    System.out.println("Server started:");
}
load是访问密钥库的强制调用,否则无法访问该密钥库。Javadoc是这么说的。加载密钥库后,可以从密钥库中读取现有条目,或将新条目写入密钥库。您有一些重载方法来加载

KeyManagerFactory是一个遵循Factory模式的类,它创建密钥管理器实例,用于管理特定类型的密钥材料,以供安全套接字使用


你应该阅读每节课的纪录片,并提出更具体的问题。我已经阅读了文档。我需要的是解释而不是建议。文档,不是纪录片。。。另外,不要使用Windows库路径来引用JDK,而是遵循更实用的方法;跨平台方法,即%JAVA_HOME%/Contents/HOME/jre。请看一看,我投票将此问题作为离题题结束,因为OP没有显示任何对其问题的研究。