1.metaRTC5.0新版本支持mbedtls(PolarSSL)
2.借助mbedTLS了解DTLS握手协议
metaRTC5.0新版本支持mbedtls(PolarSSL)
mbed TLS(PolarSSL)是码阅TLS和SSL协议的实现,特别适合小型嵌入式设备,码阅性能优越于openssl。码阅metaRTC5.0版本新增支持openssl与mbed TLS。码阅此版本对mbedtls2.0与3.0版本具有兼容性。码阅
下载mbedtls源码并进行编译,码阅在线桌面源码需对mbedtls/mbedtls_config.h(mbedtls3.0)与mbedtls/config.h(mbedtls2.0)中的码阅参数进行修改,去掉#define MBEDTLS_SSL_DTLS_SRTP的码阅注释以激活其功能。
使用CMake文件(CMakeLists.txt)进行编译配置,码阅将ON设置在cmake文件中以支持mbedtls,码阅或者通过编译参数实现支持。码阅
创建build目录并切换至该目录,码阅执行cmake ..命令进行预编译,码阅然后使用make命令进行编译。码阅
对于metaRTC的码阅jquery weui 源码编译,需调整yang_config.h中的配置,将Yang_Using_Openssl设为1以使用openssl,或设为0使用mbedtls。在qt demo工程中,需注释openssl相关部分,取消mbedtls部分的注释。在cmake工程中,tdx lfs 源码需设置mbedtls静态库的链接。
借助mbedTLS了解DTLS握手协议
本文旨在通过mbedTLS协议栈的实践操作,解析DTLS的握手过程。DTLS是在UDP层面上为TLS提供安全防护的协议,特别适合资源受限的嵌入式环境,如CoAP在物联网和云端通讯中的应用。
在mbedTLS这个开源且轻量级的源码网页大改SSL/TLS库中,我们利用其自带的dtls_client/dtls_server测试程序来观察握手过程。这个程序虽然在localhost上运行,但可以作为理解DTLS握手的基础。它使用了ECDHE_RSA_WITH_AES__GCM_SHA的加密套件,握手过程与RSA密钥交换有所不同,如多了Server Key Exchange报文。
为了深入分析,debug使用源码我们需要在源代码中开启调试信息,如在dtls_client.c和dtls_server.c中设置DEBUG_LEVEL,记录时间戳。然后,通过Wireshark抓包工具分析网络交互,结合调试信息理解握手报文的发送和接收。
DTLS握手流程包括客户端发送Client Hello,可能包含Hello Verify Request(首次连接时有,后续使用Cookie验证),然后是服务器回应Server Hello,接着是证书交换、服务器公钥交换、Change Cipher Spec和Finished等报文的交互。验证阶段很重要,如使用Cookie来防止DoS攻击,确保服务器与合法客户端建立连接。
握手结束后,双方利用协商的会话密钥对应用数据进行加密,每个数据包都包含序列号以保证数据顺序。通过mbedTLS的实例,我们可以直观理解DTLS握手协议的工作原理。
总结,虽然之前对SSL/TLS有所了解,但实际应用时仍需深入研究,例如mbedTLS的代码。通过实践和记录,我们可以更好地应对相关问题,为后续学习和工作提供参考。