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

uWebSockets (C++): secure wss server

本文关键字:WSS 服务器 安全 C++ uWebSockets      更新时间:2023-10-16

我在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(。

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

我知道

你可以使用uWebSockets for SSL/TLS,但是...我会考虑将TLS/SSL问题与主应用程序分开。

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

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