Support standard TLS and mTLS in the C++ client - #18601
Conversation
|
Thanks for splitting standard TLS/mTLS support into a separate PR and keeping OpenSSL as the default. I found two issues that I think should be addressed before merging:
These findings are based on static review of |
HTHou
left a comment
There was a problem hiding this comment.
Thanks for addressing the previous findings. The updated lifecycle introduces one additional correctness issue, and I have two follow-up comments on test coverage. Details are attached to the relevant lines. This is a static review; I have not run the full build locally.
Thanks for the review. Both original findings are addressed: Darwin OpenSSL IDs and dependencies are rewritten to @rpath and the package smoke test hides the original install directory; NodesSupplier initialization is deferred until open() so it receives the final SSL configuration. The follow-up fixes and coverage are summarized in the inline replies. |
HTHou
left a comment
There was a problem hiding this comment.
Re-reviewed eec6aba, including SSL configuration propagation through the C/C++ APIs, SessionPool, discovery and reconnect paths, Session lifecycle guards, and the OpenSSL packaging changes. The previous findings have been addressed, and I found no additional blocking issues. I also checked the macOS source-OpenSSL and Windows CI logs: the plain, TLS and mTLS test phases passed. Approval is based on code review and CI evidence; I have not run a full local build. Thanks for the fixes and regression coverage.
…pp-openssl # Conflicts: # pom.xml
Description
Standard TLS and mTLS
Add CA verification and optional PEM client certificate/private key support to the C++ Tree, Table, SessionPool, and C APIs. TLS settings are preserved across reconnects and node discovery. TLCP is intentionally excluded from this PR.
OpenSSL packaging
Build checksum-pinned OpenSSL 3.5.8 from source by default on Linux, macOS, and Windows, and bundle its runtime libraries with the C++ SDK. A compatible system OpenSSL remains opt-in.
Tests
Run the C++ integration tests against real IoTDB servers in plain, TLS, and mTLS modes, including rejection of clients without certificates when client authentication is required.
This is the standard TLS/mTLS part split from #18597; TLCP can be handled independently.
This PR has:
Key changed/added classes (or packages if there are too many classes) in this PR
SslConfigRpcSslUtilsSessionBuilder,TableSessionBuilder, andSessionPoolBuilder