默认情况下,QT在编译期间查找OpenSSL标头,以便在代码中启用对加密/ SSL的支持.由于几个原因,我想在我的代码中使用mbedTLS,并希望QT也将其用作加密库.有没有人能够做到这一点?
我正在研究用于嵌入式设备的不同 SSL/TLS 库。
我想知道人们认为这些库的优缺点是什么,以及这些库是否有特定的用例。
我有一个加载到mbedtls的x509证书,我可以通过以下方式获取整个主题字段:
mbedtls_x509_dn_gets(p, n, cert.subject);
Run Code Online (Sandbox Code Playgroud)
可以对输出进行字符串标记化以提取特定字段,但这似乎容易出错.
是否有一种简单的方法来获取此字段的单个OID值,例如CN或OU条目?
您应该以什么格式在 WifiClientSecure 模块中提供证书(和密钥)?不存在任何示例,也没有其用法的文档。
我正在遵循 Arduino (ESP32) WiFiClientSecure 示例代码 - 并尝试在指定 CA 证书时进行连接,例如:
client.connect(server, 443, test_ca_cert, test_client_cert, test_client_key)
(test_client_cert和test_client_key是 NULL 指针)。如果test_ca_cert是 NULL 指针,则 SSL 连接正常。
如果我尝试指定我自己的test_ca_cert,我总是会得到:
CA cert: mbedtls_x509_crt_parse returned -0x2180(这是“无效格式”的错误代码)
我已经尝试了很多东西,例如test_ca_cert带有 PEM 格式(明文)base64 编码证书的字符串,以及 DER 格式证书的字节数组。似乎什么都不起作用。
该证书应指定什么格式?
我有一个mbedtls 生成的RSA 公钥,它是在我需要在 Golang 中解析的嵌入式设备上创建的。我的密钥不是 pem 格式,只包含模数和指数,如下所示:
N = 9C99AB1DC1462220A628D19BB6C6627FDCCC208FD9F93722F44515F5086F3312D3EFE256A11789F1F7F9A114B879A2DE0005FAE99A68321DD821CE589D1F6E0D
E = 010001
Run Code Online (Sandbox Code Playgroud)
我确信我可以自己解析这个,但是因为你应该永远不要实现你自己的加密方法,而且 Golang 有一套非常完整的功能,我该怎么做才能从中创建一个rsa.PublicKey呢?
我可以生成一个 PEM 密钥,但这似乎是一个很大的浪费
谢谢
我想计算一个文件的SHA256值,文件大小超过1M。为了使用 mbedtls 库获取这个哈希值,我需要将整个文件复制到内存中。但是我的内存大小只有 100K。所以我想知道是否有一些方法可以计算部分中的文件哈希值。
我在与www.howsmyssl.com/a/check建立安全连接时遇到了一些麻烦.我使用wolfSSL进行连接,但握手总是失败(致命错误警报40).我试图嗅探网络以查看数据包,看看究竟发送了什么以及支持哪些密码套件,我看到根据ssllabs的测试,howsmyssl.com和我的客户有共同的密码套件.所以我真的不知道错误发生在哪里.这是客户的踪迹:

这是一个链接到www.howsmyssl.com的ssllabs analysation.在这里你可以看到他们有共同的密码套件(例如0xc02f),所以我认为连接应该成功,或者我错过了什么?
编辑: 这是wolfssl的调试日志
[0;32mI (6565) openssl_example: OpenSSL demo thread start OK[0m
[0;33mW (6565) openssl_example: Size of long = 4, Size of longlong = 8
[0m
[0;32mI (6565) openssl_example: get target IP address[0m
[0;32mI (6595) openssl_example: OK[0m
[0;32mI (6595) openssl_example: 104.196.190.195[0m
wolfSSL Entering wolfSSL_Init
wolfSSL Entering wolfCrypt_Init
[0;32mI (6595) openssl_example: create SSL context ......[0m
wolfSSL Entering WOLFSSL_CTX_new_ex
wolfSSL Entering wolfSSL_CertManagerNew
wolfSSL Leaving WOLFSSL_CTX_new, return 0
[0;32mI (6615) openssl_example: OK[0m
wolfSSL Entering wolfSSL_CTX_set_verify
wolfSSL Entering wolfSSL_CTX_load_verify_buffer
Getting into …Run Code Online (Sandbox Code Playgroud) 我在嵌入式设备上遇到了一个 mbedTLS 示例,在下载固件之前我看到了服务器证书验证(以 github.com 为例),但唯一编码的证书/密钥是 github 之一(CA 链,而不是 github 证书)本身)。
我的问题是:
我对答案有一个大致的了解,但我需要确定性。
问候,
尝试将 mbedtls 添加到我的项目中,我使用 apt-get install 来安装 libmbedtls-dev 这些导入是否不正确?适用于 Ubuntu 16.04。在 18.04 上运行良好
file (GLOB C_FILES *.c)
file (GLOB H_FILES "../../../include/thrift/ssl/*.h")
add_library (thrift_tcp_ssl ${THRIFT_LIB_TYPE} ${C_FILES} ${H_FILES})
target_link_libraries (thrift_tcp_ssl PRIVATE thrift -lmbedtls -lmbedx509 -lmbedcrypto)
target_include_directories (thrift_tcp_ssl PRIVATE ../../../include)
install (TARGETS thrift_tcp_ssl LIBRARY DESTINATION lib ARCHIVE DESTINATION lib RUNTIME DESTINATION bin)
Run Code Online (Sandbox Code Playgroud)
unbuntu 16 出现此错误
/usr/bin/ld: 找不到 -lmbedtls