1

我有一个带有我创建的 Petalinux 构建的Xilinx ZCU106,其中包括一个使用SignalR-Client-Cpp的应用程序。尽管尝试了很多事情,但在调用start()我的signalr::hub_connection.

此应用程序在其他 Linux 系统(如 Ubuntu)上运行良好。我认为问题在于很难找到ca-certificates.crt通常位于/usr/local/ssl更普通的 Linux 发行版(如 Ubuntu)上的文件。在 Petalinux 构建中,它位于此处:/etc/ssl/certs/ca-certificates.crt.

我能说的最好的,我需要做这样的事情来配置signalr::hub_connection使用证书文件:

web::http::client::http_client_config httpConfig;
httpConfig.set_ssl_context_callback([](boost::asio::ssl::context& ctx) {
    ctx.load_verify_file("/etc/ssl/certs/ca-certificates.crt"); });

web::websockets::client::websocket_client_config wsConfig;
wsConfig.set_ssl_context_callback([](boost::asio::ssl::context& ctx) {
    ctx.load_verify_file("/etc/ssl/certs/ca-certificates.crt"); });

signalr::signalr_client_config signalrConfig;
signalrConfig.set_http_client_config(httpConfig);
signalrConfig.set_websocket_client_config(wsConfig);

auto hubConn = signalr::hub_connection_builder::create(signalrURI).build();

hubConn.set_client_config(signalrConfig);

std::promise<void> task;
hubConn.start([&task](std::exception_ptr exception) { 
    // Code that checks the exception, etc

然而,即使这样做,传入的异常也会start()被填充,说明“SSL 握手错误”。

我已经尝试过一些其他的事情,比如在给它之前使用web::credentials和设置它们,但我得到了相同的结果。signalr_client_confighub_connection

我不知道如何让它发挥作用,我希望其他人可能有一些想法?

4

0 回答 0