Java SSLSocket没有';不执行主机名验证
我在android应用程序中使用SSLSocket 根据这篇文章,SSLSocket不执行主机名验证 使用IP而不是域时,我没有看到任何异常,一切正常 那么我可以使用IP或任何其他域进行连接吗 我已经从letsencrypt获得了一个域的证书,我想知道我是否可以将它用于SSLSocket的任何域或IPJava SSLSocket没有';不执行主机名验证,java,android,sockets,ssl,Java,Android,Sockets,Ssl,我在android应用程序中使用SSLSocket 根据这篇文章,SSLSocket不执行主机名验证 使用IP而不是域时,我没有看到任何异常,一切正常 那么我可以使用IP或任何其他域进行连接吗 我已经从letsencrypt获得了一个域的证书,我想知道我是否可以将它用于SSLSocket的任何域或IP SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, nulls, null); SocketFactory sslsocke
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, nulls, null);
SocketFactory sslsocketfactory = sc.getSocketFactory();
SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(host, 443);
sslsocket.setSoTimeout(5000);
sslsocket.startHandshake();
答案在您的链接上: 你的应用程序需要自己验证主机名,最好是通过调用 具有预期主机名的getDefaultHostnameVerifier()。进一步的 请注意HostnameVerifier.verify()不会在主机上引发异常 错误,但返回您必须显式返回的布尔结果 选中 “我想知道我可以将它用于任何带有SSLSocket的域或IP!” 不,您将无法这样做,连接的证书必须在您的客户端中,我们可以预期不同的域使用不同的证书:)
请查看此链接。tnx但我在android studio!你怎么知道的?