Petalinux 上的 SignalR-Client-Cpp 抛出“SSL 握手错误”异常

问题描述 投票:0回答:1

我有一个 Xilinx ZCU106,其中包含我创建的 Petalinux 版本,其中包含使用 SignalR-Client-Cpp 的应用程序。尽管尝试了很多方法,但在我的

start()
上调用
signalr::hub_connection
后,我不断收到“SSL 握手错误”异常。

该应用程序在 Ubuntu 等其他 Linux 系统上运行良好。我认为问题在于很难找到

ca-certificates.crt
文件,在更普通的 Linux 发行版(如 Ubuntu)上,该文件通常位于
/usr/local/ssl
中。在 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_config
上,然后再将其交给
hub_connection
,但我得到了相同的结果。

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

c++ ssl signalr petalinux signalr-client
1个回答
0
投票

它对我有用,如下所示

        web::http::client::http_client_config httpConfig;
        httpConfig.set_validate_certificates(false);
        signalr::signalr_client_config signalrConfig;
        signalrConfig.set_http_client_config(httpConfig);

        web::websockets::client::websocket_client_config wsConfig;
        wsConfig.set_validate_certificates(false);
        signalrConfig.set_websocket_client_config(wsConfig);
        connection.set_client_config(signalrConfig);
© www.soinside.com 2019 - 2024. All rights reserved.