套接字IO - 如何在安全域上配置和连接到netty socket io服务器

时间:2018-03-10 10:40:25

标签: java ssl https socket.io

我需要一些帮助,通过https进行netty socket io。我已经在我的本地环境中获得了它,但没有在具有安全域的服务器上。服务器启动但客户端无法连接。通过使用IP和域名启动套接字服务器来尝试。要使服务器以 setHostname 方法中的域名作为主机名值启动,我在/ etc / hosts文件中添加了一个条目,如下所示

127.0.0.1 localhost example.com

套接字服务器通过将example.com作为主机名启动,但客户端无法通过https使用相同的主机名进行连接,如下所示

var socket = io.connect('https://example.com:10443')

尝试了选项 - {secure:true,reconnect:true,rejectUnauthorized:false} 也是同样的问题。

在服务器端,我的配置如下

Configuration configuration = new Configuration();
configuration.setHostname("example.com");
configuration.setPort(10443);
configuration.setKeyStorePassword("mypassword");
InputStream stream = getClass().getClassLoader().getResourceAsStream("keystore.jks");
configuration.setKeyStore(stream);

jsk文件是使用 keytool 命令为同一个域创建的(example.com)

端口有什么要做的 - 套接字服务器要使用10443吗?或者还有其他配置吗?

1 个答案:

答案 0 :(得分:0)

得到了解决方案!我没有提到域名是在cloudflare上设置的。这里的问题出在我使用的端口 - 10443。云闪存不支持它。将其更改为8443并且它有效!

对于遇到此问题的用户,请查看here Cloudflare支持的受支持端口列表。与我不同,可以节省你的大部分时间。

另外,请注意我在setHostname()方法中使用了我的公共IP作为主机名,因此我不需要在hosts文件中添加任何内容。然后在客户端使用https提供实际域名以连接到服务器。而已。谢谢大家!

和Sandeep