解释代码 - SSL
Explain the code - SSL
任何人都可以解释下面的代码(标记为 "HERE")。
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:");
}
Keystore.load()
是访问密钥库的强制调用,否则您无法访问它。 Javadoc 是这么说的。一旦加载了密钥库,就可以从密钥库中读取现有条目,或者将新条目写入密钥库。 load()
.
有一些重载方法
KeyManagerFactory
是一个遵循工厂模式的 class,它创建密钥管理器实例来管理特定类型的密钥 material 以供安全套接字使用。
任何人都可以解释下面的代码(标记为 "HERE")。
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:");
}
Keystore.load()
是访问密钥库的强制调用,否则您无法访问它。 Javadoc 是这么说的。一旦加载了密钥库,就可以从密钥库中读取现有条目,或者将新条目写入密钥库。load()
. 有一些重载方法
KeyManagerFactory
是一个遵循工厂模式的 class,它创建密钥管理器实例来管理特定类型的密钥 material 以供安全套接字使用。