Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SSLSocket没有';不执行主机名验证_Java_Android_Sockets_Ssl - Fatal编程技术网

Java SSLSocket没有';不执行主机名验证

Java 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

我在android应用程序中使用SSLSocket 根据这篇文章,SSLSocket不执行主机名验证

使用IP而不是域时,我没有看到任何异常,一切正常 那么我可以使用IP或任何其他域进行连接吗

我已经从letsencrypt获得了一个域的证书,我想知道我是否可以将它用于SSLSocket的任何域或IP

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!你怎么知道的?