uWebSockets(C ++):安全的wss服务器

时间:2017-11-19 01:43:30

标签: c++ ssl websocket server openssl

我在C ++中使用uWebSockets来托管WebSocket服务器。但是,我需要它是一个安全的wss服务器,而不仅仅是ws服务器。

我试过这段代码:

uS::TLS::Context tls = uS::TLS::createContext ("./cert.perm", "./key.perm", "passphrase");

if (h.listen (9002, tls)) {
    cout << "Game server listening on port 9002" << endl;
    h.run();
}

我正在使用此shell命令生成证书和密钥:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 30

然后我尝试使用wss://address而不是通常的ws://address连接到我的远程服务器,但是,它无法连接。

任何想法为什么?感谢

更新#1

tls变量似乎实际上是NULL,因此看起来证书部分不起作用。

更新#2

我在代码中输入了错误的文件扩展名,它们应该是pem而不是perm。但是,服务器现在不会在wssws上建立连接。

更新#3

解决上述问题后,tls变量现在为1而不是0(我假设为NULL)。

2 个答案:

答案 0 :(得分:1)

如果您使用Web浏览器ws-client连接到wss://地址,请尝试检查浏览器是否存在问题。我碰巧创建了自己的证书,但是浏览器阻止了连接,因为它们没有得到任何CA的认证。 在浏览器中输入类似“https://address”的内容,并为“地址”添加安全例外。

答案 1 :(得分:0)

我知道您可以使用uWebSockets进行SSL / TLS,但是......我会考虑将TLS / SSL问题与主应用程序分开。

将TLS / SSL层与应用程序分离,可以在不重新编译应用程序的情况下更新TLS / SSL,并简化代码库。

我建议使用TLS / SSL代理或隧道,同时将app本地绑定到环回地址或unix套接字。