-
Notifications
You must be signed in to change notification settings - Fork 1.1k
feat(tls): Remove tls roots implicit configuration #1731
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(tls): Remove tls roots implicit configuration #1731
Conversation
Mentioned this on Discord, just repeating it here so it doesn't get lost: why do you want to remove the TLS roots features? In #1724 you didn't want to require the caller to have to depend on rustls-pemfile directly, so this seems to be reasoning in the opposite direction. |
They share the same philosophy of increasing the user's freedom of configuration without compromising ease of use as much as possible, and reducing the overall complexity of tonic to lower maintenance costs. Considering that using PEM encoded certificate files when using tls is a typical use case, I think it is a redundant interface to leave the user to make that conversion as web framework. Removing tls roots and adding interfaces to add them (in exchage for increasing internal These are intended to balance easiness to use, configurability, and tonic's maintenance costs. |
I am okay with adding the ability to use your own CA certs but I like that idea that we provide the ability to just work with either the system or webpki root certs. I think removing this kinda makes it more tough for users. If they want more flexibility they should be using their own customer connector imo. |
hyper-rustls offers high-level APIs to use rustls-platform-verifier, rustls-native-certs and webpki-roots. Maybe we can reuse that code here? (I forget if tonic can build on hyper-rustls or whether there's some reason it needs to work with tokio-rustls directly.) |
probably legacy stuff, though I am inclined to not change this code that much. We have a new transport on the way anyways. |
a575f87
to
9bdf3a9
Compare
Instead of removing these features, added options to enable tls roots, and removes the implicit configuration of them. I think this change simplifies the implementation with keeping the user friendly features. |
This makes sense to me. |
Would've been nice to mark this as a breaking change. Was confused that I could not connect after bumping tonic. |
The implicit TLS roots configuration [was removed](hyperium/tonic#1731) on `tonic` `v0.12.0`.
PR hyperium#1866 fixed the breaking change introduced in hyperium#1731, but resets the `tls_config` instead of adding the tls roots to existing config. This patch resolves the regression and also restores expected behaviour.
PR hyperium#1866 fixed the breaking change introduced in hyperium#1731, but resets the TLS config without checking if `tls` is set. This patch resolves the regression and restores expected behaviour.
## Summary Add explicit TLS config for conductor when the sequencer url is https ## Background Tonic [removed implicit TLS configs](hyperium/tonic#1731) in v0.12.0 which now causes TLS errors when conductor tries to connect to a remote sequencer network over TLS.
## Summary Add explicit TLS config for conductor when the sequencer url is https ## Background Tonic [removed implicit TLS configs](hyperium/tonic#1731) in v0.12.0 which now causes TLS errors when conductor tries to connect to a remote sequencer network over TLS.
* fix: tls config overwrite in endpoint PR #1866 fixed the breaking change introduced in #1731, but resets the TLS config without checking if `tls` is set. This patch resolves the regression and restores expected behaviour. * fix: cargo fmt whitespace check --------- Co-authored-by: vigneshwar.sm <[email protected]> Co-authored-by: Lucio Franco <[email protected]>
* Add From<T> for Response<T> (#1064) Co-authored-by: tottoto <[email protected]> * chore: Add getrandom and wasi crate to cargo-deny skip config (#2169) * chore(examples): Update to rand 0.9 (#2168) * chore(interop): Replace repeat and take with repeat_n (#2170) * Update LICENSE (#2167) * chore(transport): Update url to http crate document (#2173) * chore: Refactor redundant pattern match (#2174) * chore(transport): Remove redundant type reconstruct (#2176) * chore: Update to strum 0.27 (#2180) * feat: optional `SSLKEYLOGFILE` support (#1539) Add a `use_key_log` option to server and client TLS configs that -- when set -- will enable rustls's `SSLKEYLOGFILE` handling. This is helpful when you want to intercept TLS traffic for debugging and is generally supported by many libraries and browsers. Also see: https://wiki.wireshark.org/TLS#using-the-pre-master-secret * chore: Remove html_root_url (#2184) * chore: Remove unused mutability (#2183) * chore: Update generated code (#2222) * chore: Update cargo-deny config (#2210) * chore: Add rustix and linux-raw-sys crate to cargo-deny skip config * chore: Ignore RUSTSEC-2024-0436 * Remove unnecessary mut (#2219) * remove unnecessary mut * remove unnecessary mut for health_reporter --------- Co-authored-by: tottoto <[email protected]> * chore: fix some comments (#2224) Signed-off-by: jimmycathy <[email protected]> Co-authored-by: tottoto <[email protected]> * feat: Allow convert i32 to Code in const context (#2195) * chore: Disable unused tower feature (#2196) * chore(router): Remove unnecessary body type converting (#2214) * chore(server): Use standard library pin macro (#2212) * chore(build): Use idiomatic api (#2211) * feat(tonic): Exclude benches-disabled to remove Apache-2.0 resource (#2204) * chore(ci): Add concurrency group to cancel old ci (#2202) * chore(test): Use library crate in test (#2201) * chore: Remove unused rand crate from dev-dependencies (#2198) * chore: Remove documentation config in manifest (#2193) * chore(test): Remove unnecessary macro_use (#2200) * feat: Add proto header to generated code (#2205) * chore(router): Use upstream poll_ready to implement service (#2215) * feat(router): Use infallible as error type (#2232) * chore: Remove unnecessary license file from private crate (#2203) * chore: update changelog to point to releases (#2235) * chore: fix changelog header * chore(server): Remove import sleep and pending function (#2234) * chore(server): Refactor default http2 keepalive timeout config (#2213) * chore: Remove unnecessary docs.rs config (#2223) * feat(transport): add support for uds, unix domain socket (#2218) * feat(transport): add support for uds, unix domain socket (#2218) Previously the uds support lives as an example in the `example/src/uds` folder. Endpoint is refactored to support multiple endpoint types, including Uri and Uds. The supported unix domain socket URI follows RFC-3986 which is aligned with the gRPC naming convention. - unix:relative_path - unix:///absolute_path References: - https://datatracker.ietf.org/doc/html/rfc3986 - https://github.com/grpc/grpc/blob/master/doc/naming.md * fix feature flag error * fix windows build * fix windows build 2 * fix windows build 3 * fix windows build 4 * fix windows build 5 --------- Co-authored-by: Lucio Franco <[email protected]> * Handle stream error correctly (#2199) Co-authored-by: Lucio Franco <[email protected]> * chore: Remove resolved cargo-deny config (#2230) * Create place for grpc crate and initial contents (#2192) * Create place for grpc crate and initial contents * Cargo.toml fixes * clippy * clippy 2 * 3 * grpc-web: relax bounds for inner service's response body (#2245) * grpc-web: relax bounds for inner service's response body * address feedback * chore(test): Allow clippy::doc_overindented_list_items lint in generated code (#2246) * chore(test): Update to rand 0.9 (#2236) * chore(router): Remove unnecessary type converting (#2237) * chore(ci): Update to nightly-2025-03-27 on udeps ci (#2242) * chore(codegen): Update to protox 0.8 (#2254) * chore(ci): Remove deny job (#2255) Removing the deny ci job it has become more of a pain to manage than actually helpful. * feat: preserve request user-agent (#2250) Co-authored-by: Lucio Franco <[email protected]> * feat(server): Add method to get local addr to TcpIncoming (#2233) * feat: expose Status as a Response extension (#2145) Co-authored-by: Lucio Franco <[email protected]> * chore(server): Remove unnecessary await service ready (#2258) * chore: Use symbolic link for license file (#2241) * chore: Use inline format argument (#2260) * chore: Add `flake.nix` (#2261) * chore: Fix interop test certs (#2262) * chore: Fix interop test certs * fix bash script: * fix: tls config overwrite in endpoint (#2252) * fix: tls config overwrite in endpoint PR #1866 fixed the breaking change introduced in #1731, but resets the TLS config without checking if `tls` is set. This patch resolves the regression and restores expected behaviour. * fix: cargo fmt whitespace check --------- Co-authored-by: vigneshwar.sm <[email protected]> Co-authored-by: Lucio Franco <[email protected]> * chore(tonic-bench): Fix failing bench (#2207) Co-authored-by: Lucio Franco <[email protected]> * feat: expose creation of HealthService and HealthReporter (#2251) * Expose creation of HealthService and HealthReporter * add default impl for HealthReporter * [spr] initial version (#2264) Created using spr 1.3.6-beta.1 * Revert "[spr] initial version (#2264)" (#2265) * chore: Prepare `v0.13.1` release Reviewers: Pull Request: #2266 --------- Signed-off-by: jimmycathy <[email protected]> Co-authored-by: Amr Hassan <[email protected]> Co-authored-by: tottoto <[email protected]> Co-authored-by: Maxim Evtush <[email protected]> Co-authored-by: Marco Neumann <[email protected]> Co-authored-by: DAKAI, TZOU <[email protected]> Co-authored-by: jimmycathy <[email protected]> Co-authored-by: Adam Basfop Cavendish <[email protected]> Co-authored-by: Jakub Łabor <[email protected]> Co-authored-by: Doug Fawley <[email protected]> Co-authored-by: Brandon Williams <[email protected]> Co-authored-by: Darren Bolduc <[email protected]> Co-authored-by: Ferenc Tamás <[email protected]> Co-authored-by: Vigneshwar S <[email protected]> Co-authored-by: vigneshwar.sm <[email protected]> Co-authored-by: Rafael RL <[email protected]> Co-authored-by: Leon Hartley <[email protected]>
## Summary Add explicit TLS config for composer's sequencer connection ## Background Tonic [removed implicit TLS configs](hyperium/tonic#1731) in v0.12.0 which now causes TLS errors when composer tries to connect to a remote sequencer network over TLS. ## Changelogs Changelogs updated. ## Related Issues Similar to fix done for conductor in [PR #2140](#2140)
* chore: Use symbolic link for license file (hyperium#2241) * chore: Use inline format argument (hyperium#2260) * chore: Add `flake.nix` (hyperium#2261) * chore: Fix interop test certs (hyperium#2262) * chore: Fix interop test certs * fix bash script: * fix: tls config overwrite in endpoint (hyperium#2252) * fix: tls config overwrite in endpoint PR hyperium#1866 fixed the breaking change introduced in hyperium#1731, but resets the TLS config without checking if `tls` is set. This patch resolves the regression and restores expected behaviour. * fix: cargo fmt whitespace check --------- Co-authored-by: vigneshwar.sm <[email protected]> Co-authored-by: Lucio Franco <[email protected]> * chore(tonic-bench): Fix failing bench (hyperium#2207) Co-authored-by: Lucio Franco <[email protected]> * feat: expose creation of HealthService and HealthReporter (hyperium#2251) * Expose creation of HealthService and HealthReporter * add default impl for HealthReporter * [spr] initial version (hyperium#2264) Created using spr 1.3.6-beta.1 * Revert "[spr] initial version (hyperium#2264)" (hyperium#2265) * chore: Prepare `v0.13.1` release Reviewers: Pull Request: hyperium#2266 * chore: Disable unused tower feature (hyperium#2270) * chore(ci): Set RUSTFLAGS only on check job (hyperium#2271) * chore: Update to webpki-roots 1 (hyperium#2269) * chore(ci): Update to cargo-check-external-types 0.2 (hyperium#2272) * chore(ci): Set token permission to read (hyperium#2275) * chore(test): Remove cargo-machete config (hyperium#2278) * chore: Remove unused dependency (hyperium#2277) * feat: add support for tower's load-shed layer (hyperium#2189) Refs: hyperium#1616 * chore: box Status contents (hyperium#2253) (hyperium#2282) * chore: box Status contents (hyperium#2253) * chore: use private into_status method * chore(doc): Fix outdated limit in comment (hyperium#2297) * fix outdated limit in comment This mention was missed when the default changed in hyperium#1335 * Add backquotes Co-authored-by: tottoto <[email protected]> --------- Co-authored-by: tottoto <[email protected]> * feat: Update to prost 0.14 (hyperium#2300) * chore: Start development of version 0.14 (hyperium#2303) * chore(build): Make empty client and server modules private (hyperium#2291) Co-authored-by: Lucio Franco <[email protected]> Co-authored-by: tottoto <[email protected]> * chore(test): Simplify skip debug test (hyperium#2305) * chore(ci): Exclude semver check of unreleased crate (hyperium#2304) * feat(types): Update error_details.proto to a56cbf3b (hyperium#2286) (hyperium#2306) * chore(test): Remove unnecessary prost-build dependency (hyperium#2307) * feat(transport): Allow setting TCP_KEEPINTVL and TCP_KEEPCNT (hyperium#2299) * Allow setting TCP_KEEPINTVL and TCP_KEEPCNT * fix windows * fix clippy windows * fix(tonic): make `Streaming` `Sync` again (hyperium#2293) The boxed `Decoder` inside `Streaming` need not be `Sync` since hyperium#804. Unfortunately, that makes `Streaming` non-`Sync`, meaning that all the generated `tonic` futures cannot be awaited in `Sync` futures. In fact, the only times we use the `Decoder`, we have a `&mut` unique reference to it, so we are guaranteed not to require synchronization. The `sync_wrapper` crate encodes this reasoning, allowing us to safely make the `Streaming` type `Sync` regardless of whether the contained `Decoder` is `Sync` or not. * feat: preserve user-agent header (hyperium#2290) Co-authored-by: Lucio Franco <[email protected]> * chore: Make publish script portable (hyperium#2313) * feat(tls): Add tls handshake timeout support (hyperium#2309) Co-authored-by: tottoto <[email protected]> * docs(tonic-build): remove doc-difference between `lib.rs` and Readme (hyperium#2308) * doc: try to improve the doc-disparity between `tonic-build`'s `lib.rs` and the readme * Fix indentation * fix the doctests * fix a typo and retes an assumption * Change `compile_fail` to `ignore` Co-authored-by: tottoto <[email protected]> --------- Co-authored-by: tottoto <[email protected]> * Merge changes from next to master branch (hyperium#2315) Co-authored-by: Arjan Singh Bal <[email protected]> Co-authored-by: Easwar Swaminathan <[email protected]> * chore(interop): Update to console 0.16 (hyperium#2318) * chore(test): Remove unnecessary tokio-stream dependency (hyperium#2311) * chore(test): Refactor default stubs test (hyperium#2310) * chore(test): Use tempfile crate to handle temporary file (hyperium#2325) * chore(grpc): Update to rand 0.9 (hyperium#2324) --------- Co-authored-by: tottoto <[email protected]> Co-authored-by: Lucio Franco <[email protected]> Co-authored-by: Vigneshwar S <[email protected]> Co-authored-by: vigneshwar.sm <[email protected]> Co-authored-by: Rafael RL <[email protected]> Co-authored-by: Leon Hartley <[email protected]> Co-authored-by: Joe Roback <[email protected]> Co-authored-by: Raphael Taylor-Davies <[email protected]> Co-authored-by: Alexis Darrasse <[email protected]> Co-authored-by: Alex Steele <[email protected]> Co-authored-by: Kristopher Wuollett <[email protected]> Co-authored-by: Makro <[email protected]> Co-authored-by: James Kay <[email protected]> Co-authored-by: Darren Bolduc <[email protected]> Co-authored-by: Honsun Zhu <[email protected]> Co-authored-by: Frank Elsinga <[email protected]> Co-authored-by: Arjan Singh Bal <[email protected]> Co-authored-by: Easwar Swaminathan <[email protected]>
Adds ability to add CA certificates and removes
tls-webpki-roots
andtls-roots
features.