您需要按照此处所述为自签名证书创建信任存储文件。在客户端使用它来连接服务器。不管您使用JKS还是其他格式都没有关系,我现在假设使用JKS。
要实现您的想法
TrustManager,显然需要一个不同的方法。您可以将
TrustManagerFactory其信任设置与新创建的信任存储区一起使用。
TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX");KeyStore ks = KeyStore.getInstance("JKS");FileInputStream in = new FileInputStream("<path to your key store>");ks.load(in, "password".toCharArray());in.close();tmf.init(ks);TrustManager[] tms = tmf.getTrustManagers();使用
tms来初始化你
SSLContext,而不是为新的信任设置用于您的SSL / TLS连接。
你还应该确保该
CN服务器TLS证书的一部分,等于您的服务器,如的FQDN(完全合格的域名),如果你的服务器基本URL是“
https://www.example.com ”,那么
CN的证书应为“
www.example.com”。主机名验证需要此功能,此功能可防止中间人攻击。您可以禁用此功能,但只有在使用此功能时,您的连接才会真正安全。



