python - 如何在 Windows C++ 中复制 python 的`ssl.get_default_context()`?
问题描述
我的最终目标是将一个简单的脚本移植mqtt-paho-python
到 C++ 中,以便在大型应用程序中集成。
使用 paho 的 python 示例非常简单:
client = mqtt.Client(transport="websockets")
client.username_pw_set(settings['username'], password=settings['password'])
client.tls_set_context(context=ssl.create_default_context())
他们设置默认的 TLS 上下文,使用用户名和密码进行身份验证,然后连接。这很好用!
但是,现在我想尝试使用paho-mqtt-cpp
. 从他们的异步示例中借用的基本示例如下所示:
mqtt::connect_options connOpts;
connOpts.set_keep_alive_interval(20);
connOpts.set_clean_session(true);
connOpts.set_user_name("username");
connOpts.set_password("password123");
mqtt::ssl_options sslOpts;
connOpts.set_ssl(sslOpts);
mqtt::async_client client("wss://test.mosquitto.org:8081", "myClient");
callback cb(client, connOpts);
client.set_callback(cb);
但是,ssl.get_default_context()
在 python 的 ssl 库中似乎为我做了很多在 C++ 中没有复制的设置;来自python自己的文档:
“对于客户端使用,如果您对安全策略没有任何特殊要求,强烈建议您使用 create_default_context() 函数来创建您的 SSL 上下文。它将加载系统的受信任 CA 证书,启用证书验证和主机名检查,并尝试选择合理安全的协议和密码设置。”
我尝试过的大多数 WSS 连接都需要证书,并且create_default_context()
似乎能够提供正确的证书而无需我自己生成任何证书。
所以我的问题是:(1) 我可以用于安全连接的 Windows 系统默认证书在哪里?(2) 我需要手动配置哪些其他设置create_default_context()
可能会在后台为我设置?
我试过查看source,但很难辨别操作系统特定的选项在哪里。
解决方案
推荐阅读
- reactjs - 如何查找或跟踪调用函数的位置?
- c - 在 C 中的子例程中将浮点数转换为字符串
- spring-boot - 如何将 Spring Function 的 Deployer 与 AWS Lambda 一起使用
- swift - AVAssetExportSession 大大降低了视频质量
- java - 为什么备份相关过程可能会导致应用程序的 onCreate 未执行?
- python - 在更改它所基于的虚拟环境后更新 Jupyter 笔记本内核
- ios - UIImageView 溢出集合视图单元格
- shell - 如何在 ansible shell 任务中正确使用 jq
- regex - 如何使用 CaptureGroup "(.+?:[\/\\]+)" 反汇编字符串?
- macos - 无法在 OSX 上运行 Firefox