我需要一些帮助,通过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吗?或者还有其他配置吗?
答案 0 :(得分:0)
得到了解决方案!我没有提到域名是在cloudflare上设置的。这里的问题出在我使用的端口 - 10443。云闪存不支持它。将其更改为8443并且它有效!
对于遇到此问题的用户,请查看here Cloudflare支持的受支持端口列表。与我不同,可以节省你的大部分时间。
另外,请注意我在setHostname()方法中使用了我的公共IP作为主机名,因此我不需要在hosts文件中添加任何内容。然后在客户端使用https提供实际域名以连接到服务器。而已。谢谢大家!
和Sandeep