【发布时间】:2017-06-07 01:22:30
【问题描述】:
我的设置
我的目标是与 FTP 服务器建立 SSL/TLS 安全连接(显式)。
相应的根 CA 证书存储在名为 truststore.jks 的信任库中。
在AUTH TLScommand 之后,我使用以下代码构建 SSLSocket。
public SSLSocket enterSecureMode(Socket s) throws Exception {
KeyStore truststore = KeyStore.getInstance("JKS");
truststore.load(Files.newInputStream(Paths.get("truststore.jks")), "mypass".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(truststore);
SSLContext sCon = SSLContext.getInstance("TLS");
sCon.init(null, tmf.getTrustManagers(), null);
SSLSocketFactory sslSocketFactory = sCon.getSocketFactory();
return (SSLSocket) sslSocketFactory.createSocket(s, "<HOSTNAME>", 21, true);
}
代码本身运行良好,我收到了一个安全的 Socket-Connection,但我想知道这是否可以承受诸如 MITM 之类的攻击。我的意思是该程序会发现有人试图“给我一个假证书”。 因此,如果一些更有经验的 SSL 网络程序员可以启发我,我会很高兴:D
【问题讨论】: