0

我正在开发一个需要从安全 websocket 读取的 C++ 客户端应用程序。在查看了一些 websocket 库后,我想使用easywsclient,但它不支持 TLS。我尝试按照这篇文章使用 OpenSSL 添加对以 wss 开头的 URL 的支持,但希望避免从文件中加载证书和私钥(如果可能的话)。我研究了这是如何在 boost asio 中完成的,他们建议使用certify来访问平台的 TLS 密钥库。我还研究了 chrome 浏览器,发现它使用了 BoringSSL,这让我找到了 Tink。但是,我找不到如何使用 Tink/BoringSSL 来保护 websocket 并处理客户端证书和密钥的示例。有人可以指出我正确的方向吗?

4

1 回答 1

0

想要从 websocket 读取的客户端不必设置证书和私钥,这仅与必须支持 tls/ssl 的 web socket 服务器相关。由于我对 C++ 了解不多,我只能给你一个 PHP 的例子,一个客户端使用 TLS/SSL 连接到 websocket 服务器。在这里,客户端准备一个 $context 以使用 TLS/SSL vai 流。

$context = stream_context_create();
stream_context_set_option($context, 'ssl', 'allow_self_signed', true);
stream_context_set_option($context, 'ssl', 'verify_peer', false);
stream_context_set_option($context, 'ssl', 'verify_peer_name', false);

稍后使用此上下文建立连接,

$this->socketMaster = stream_socket_client(
"$prot$Address$Port", $errno, $errstr, 30, 
STREAM_CLIENT_CONNECT, $context
);

如需完整来源,请访问: https ://github.com/napengam/phpWebSocketServer/blob/master/phpClient/websocketCore.php

于 2021-07-25T18:32:58.460 回答