feat: Make Rustls the default TLS provider. - #2752
Conversation
This switches the default TLS provider to Rustls. It keeps the `native-tls` feature with the same configuration it had before as the default TLS provider.
07872d2 to
ad5fefa
Compare
|
I'm working through those CI errors.
|
|
Awesome, thanks for starting this! <3
Sigh, I could look into asking if an older version can be supported, but that's unlikely. We can also setup our MSRV job to pin rustls to a version that works. reqwest tries to provide a working option, but cannot promise all dependencies won't do their own thing.
Hm, that might need us to update a minimal version of a dependency? |
It's not used by Rustls.
The Rustls version that seems to be compatible with 1.64.0 is https://crates.io/crates/rustls/0.23.19, it's 7 months old. Should I update the dependencies in the MSRV job with the other updates?
I'll look into this today. |
I just looked at them, and actually, that seems fine. In that, in our |
|
I don't even think the dependency versions in Cargo.toml need to change at all:
I've just updated the precise dependencies it needs to comply with MSRV in CI. If someone is still using 1.64.0, it should still work. |
This allows Reqwest to build on nightly with a version of aws-lc-sys that works and still maintains MSRV.
This should be a corner case since only one feature should be enable at a time, but some checks enable all features. Favor aws-lc-rs when all features are enabled.
This ensures that the MSRV for all dependencies are met.
|
One workaround it is to manually install the // reqwest/tests/support/server.rs
// see https://github.com/rustls/rustls/issues/1938#issuecomment-2567934864 for why result is ignored
let _ = rustls::crypto::aws_lc_rs::default_provider().install_default(); // added this line
let mut tls_config = rustls::ServerConfig::builder()
.with_no_client_auth()
.with_single_cert(vec![cert], key)
.unwrap(); |
Update the MSRV check to use precise dependency versions.
Since both Ring and AWS-LC-RS are supported, we need to explicitly install the correct Crypto Provider before configuring the server.
|
@ducaale those are "Workspace dependencies", it's not a non-optional dependency. Quinn does have features to enable both provider Ring and AWS-LC optionally. I've fixed the problem in dd9e110 See the features in https://github.com/quinn-rs/quinn/blob/845e68daa79278beddd30eafa30c6b2c750ed22d/quinn/Cargo.toml#L20 |
|
Thanks for working on this. Maybe it would be good to make the hostname-ignoring verifier a Cargo feature, with an appropriately signalling name like dangerous-rustls-ignore-hostname (while only activating when also enabled via API)? |
| rustls-tls-native-roots = ["rustls-tls-native-roots-no-provider", "__rustls-ring"] | ||
| rustls-tls-manual-roots = ["rustls-tls-manual-roots-no-provider", "__rustls-aws-lc-rs"] | ||
| rustls-tls-webpki-roots = ["rustls-tls-webpki-roots-no-provider", "__rustls-aws-lc-rs"] | ||
| rustls-tls-native-roots = ["rustls-tls-native-roots-no-provider", "__rustls-aws-lc-rs"] |
There was a problem hiding this comment.
Suggest getting rid of the native-roots option, rustls-platform-verifier is superior to it.
There was a problem hiding this comment.
I still need to figure out how rustls-platform-verifier would fit in here. I don't think that removing options that are currently present is a good solution, as it could break people that use them for whatever reason. My current goal is to make this work with the features Reqwest has at the moment, and then extend it later.
| #[cfg(not(any(feature = "__rustls-ring", feature = "__rustls-aws-lc-rs")))] | ||
| panic!("No provider set"); |
There was a problem hiding this comment.
Is it worth having this? If a downstream is not setting any __* options this doesn't happen, right?
There was a problem hiding this comment.
It could happen if someone cherry picks features without knowing what they enabled. Since this check was already here, I rather keep it.
There was a problem hiding this comment.
I think it can still happen, if a user enabled a *-no-provider feature and didn't "install" a default using rustls directly, right?
rustls has advanced its MSRV within the 0.23.x release series, so downstream users who are sensitive to MSRV bumps can just use an older rustls (though this seems like a pretty bad idea). On the other hand, rustls-platform-verifier has made several semver-incompatible releases while going through the same MSRV bump. |
This comment was marked as resolved.
This comment was marked as resolved.
|
After a quick check, it seems non-trivial to downgrade |
That's the reality some people live in, and that's why I try to support Debian stable. I've found personally that it's not hard at all to keep an older MSRV within the library itself, but controling dependencies is rough. Where it's possible to pin in a CI job, I do that to ensure that I haven't forced the MSRV on users, they can make the decision themselves whether using an older version is good for them.
@calavera First of all, amazing work. Really, thank you! ❤️ To your question, I have concerns, myself. I wouldn't want to recommend by default trusting the OS verifier stack, it's not often a good part of the OS. Some OSes have marked it deprecated (such as Apple), and applications like Chrome and Edge don't use them anymore (1). They provide their own verifier, with the ability to check the OS keystore for any additionally installed certificates. That's what I would want to use for reqwest's default. I do wonder if, in the meantime, we can just make the default an under-specified "it verifies things", that we could improve when there's something like what I just described available. We probably could make all of that a separate PR, either way. What do you think? |
FWIW this is not true. Nothing that is used for chain verification in Apple's |
I'm not sure that is right, but equally I'm not an Apple expert. The thing Apple recently deprecated was "Secure Transport" (an SSL API) and the verifier API is in Security framework. I understand that Apple also have a policy that this API must be used on iOS apps.
The closest we have to that is It's worth noting that it falls short of what you get when depending on the platform verifier (on good platforms1) or what a browser does. Equalising that at the level of a library is pretty challenging, and platforms/browsers can do this because they are long-lived applications where it is universally accepted that they are online most of the time, and can both update themselves and download fresh data. That's a long way of saying that using Footnotes
|
|
Fair, I conflated Apple's verifier code with |
That makes sense to me. I’d prefer to put it in a separate PR for sure. We could start by leaving the default verifier as is, and add |
|
That sounds good to me. As I mentioned in the implementation issue, I've gone ahead and made a branch to hold all these steps ( |
I’m good. Thanks for making that branch. I’ll open a new PR against it soon. |
* feat: Make Rustls the default TLS provider. This switches the default TLS provider to Rustls. It keeps the `native-tls` feature with the same configuration it had before as the default TLS provider. * fix: Fix TlsBackend default options. * fix: Remove hyper-tls from the default-tls feature. It's not used by Rustls. * fix: Update precise dependencies to run MSRV. * fix: Make explicit the dependency version for aws-lc-sys. This allows Reqwest to build on nightly with a version of aws-lc-sys that works and still maintains MSRV. * fix: Use aws-lc-rs as provider when both ring and aws-lc-rs are enabled. This should be a corner case since only one feature should be enable at a time, but some checks enable all features. Favor aws-lc-rs when all features are enabled. * fix: Fix feature config formatting. * fix: Reverse precise dep ordering. This ensures that the MSRV for all dependencies are met. * fix: Pin hyper-rustls precise version. * fix: Build `default_rustls_crypto_provider` only when rustls is enabled. * fix: Make rustls-tls feature work without default-tls. * fix: Remove unused dependency. Update the MSRV check to use precise dependency versions. * fix: Install Crypto Provider to run the HTTP3 tests. Since both Ring and AWS-LC-RS are supported, we need to explicitly install the correct Crypto Provider before configuring the server. * fix: Update nightly run with the precise version of aws-lc-sys. * fix: Use prebuilt NASM compiled code on Windows. See: https://github.com/aws/aws-lc-rs/blob/f0a6350abb247b413ffbf8ae8d8e1eb3bb1d4e66/aws-lc-sys/README.md?plain=1#L37 * fix: Update the precise version of aws-lc-rs for nightly builds. * fix: Update all Windows targets to use prebuilt nasm binaries. * fix: Set LIBCLANG_PATH for windows builds. * fix: Install clang and nasm on Windows i686. * fix: Run macman.exe after adding it to the path. * fix: Add clang and nasm for Windows x86_64 GNU.
* feat: Make Rustls the default TLS provider. This switches the default TLS provider to Rustls. It keeps the `native-tls` feature with the same configuration it had before as the default TLS provider. * fix: Fix TlsBackend default options. * fix: Remove hyper-tls from the default-tls feature. It's not used by Rustls. * fix: Update precise dependencies to run MSRV. * fix: Make explicit the dependency version for aws-lc-sys. This allows Reqwest to build on nightly with a version of aws-lc-sys that works and still maintains MSRV. * fix: Use aws-lc-rs as provider when both ring and aws-lc-rs are enabled. This should be a corner case since only one feature should be enable at a time, but some checks enable all features. Favor aws-lc-rs when all features are enabled. * fix: Fix feature config formatting. * fix: Reverse precise dep ordering. This ensures that the MSRV for all dependencies are met. * fix: Pin hyper-rustls precise version. * fix: Build `default_rustls_crypto_provider` only when rustls is enabled. * fix: Make rustls-tls feature work without default-tls. * fix: Remove unused dependency. Update the MSRV check to use precise dependency versions. * fix: Install Crypto Provider to run the HTTP3 tests. Since both Ring and AWS-LC-RS are supported, we need to explicitly install the correct Crypto Provider before configuring the server. * fix: Update nightly run with the precise version of aws-lc-sys. * fix: Use prebuilt NASM compiled code on Windows. See: https://github.com/aws/aws-lc-rs/blob/f0a6350abb247b413ffbf8ae8d8e1eb3bb1d4e66/aws-lc-sys/README.md?plain=1#L37 * fix: Update the precise version of aws-lc-rs for nightly builds. * fix: Update all Windows targets to use prebuilt nasm binaries. * fix: Set LIBCLANG_PATH for windows builds. * fix: Install clang and nasm on Windows i686. * fix: Run macman.exe after adding it to the path. * fix: Add clang and nasm for Windows x86_64 GNU.
* feat: Make Rustls the default TLS provider. This switches the default TLS provider to Rustls. It keeps the `native-tls` feature with the same configuration it had before as the default TLS provider. * fix: Fix TlsBackend default options. * fix: Remove hyper-tls from the default-tls feature. It's not used by Rustls. * fix: Update precise dependencies to run MSRV. * fix: Make explicit the dependency version for aws-lc-sys. This allows Reqwest to build on nightly with a version of aws-lc-sys that works and still maintains MSRV. * fix: Use aws-lc-rs as provider when both ring and aws-lc-rs are enabled. This should be a corner case since only one feature should be enable at a time, but some checks enable all features. Favor aws-lc-rs when all features are enabled. * fix: Fix feature config formatting. * fix: Reverse precise dep ordering. This ensures that the MSRV for all dependencies are met. * fix: Pin hyper-rustls precise version. * fix: Build `default_rustls_crypto_provider` only when rustls is enabled. * fix: Make rustls-tls feature work without default-tls. * fix: Remove unused dependency. Update the MSRV check to use precise dependency versions. * fix: Install Crypto Provider to run the HTTP3 tests. Since both Ring and AWS-LC-RS are supported, we need to explicitly install the correct Crypto Provider before configuring the server. * fix: Update nightly run with the precise version of aws-lc-sys. * fix: Use prebuilt NASM compiled code on Windows. See: https://github.com/aws/aws-lc-rs/blob/f0a6350abb247b413ffbf8ae8d8e1eb3bb1d4e66/aws-lc-sys/README.md?plain=1#L37 * fix: Update the precise version of aws-lc-rs for nightly builds. * fix: Update all Windows targets to use prebuilt nasm binaries. * fix: Set LIBCLANG_PATH for windows builds. * fix: Install clang and nasm on Windows i686. * fix: Run macman.exe after adding it to the path. * fix: Add clang and nasm for Windows x86_64 GNU.
* feat: Make Rustls the default TLS provider. This switches the default TLS provider to Rustls. It keeps the `native-tls` feature with the same configuration it had before as the default TLS provider. * fix: Fix TlsBackend default options. * fix: Remove hyper-tls from the default-tls feature. It's not used by Rustls. * fix: Update precise dependencies to run MSRV. * fix: Make explicit the dependency version for aws-lc-sys. This allows Reqwest to build on nightly with a version of aws-lc-sys that works and still maintains MSRV. * fix: Use aws-lc-rs as provider when both ring and aws-lc-rs are enabled. This should be a corner case since only one feature should be enable at a time, but some checks enable all features. Favor aws-lc-rs when all features are enabled. * fix: Fix feature config formatting. * fix: Reverse precise dep ordering. This ensures that the MSRV for all dependencies are met. * fix: Pin hyper-rustls precise version. * fix: Build `default_rustls_crypto_provider` only when rustls is enabled. * fix: Make rustls-tls feature work without default-tls. * fix: Remove unused dependency. Update the MSRV check to use precise dependency versions. * fix: Install Crypto Provider to run the HTTP3 tests. Since both Ring and AWS-LC-RS are supported, we need to explicitly install the correct Crypto Provider before configuring the server. * fix: Update nightly run with the precise version of aws-lc-sys. * fix: Use prebuilt NASM compiled code on Windows. See: https://github.com/aws/aws-lc-rs/blob/f0a6350abb247b413ffbf8ae8d8e1eb3bb1d4e66/aws-lc-sys/README.md?plain=1#L37 * fix: Update the precise version of aws-lc-rs for nightly builds. * fix: Update all Windows targets to use prebuilt nasm binaries. * fix: Set LIBCLANG_PATH for windows builds. * fix: Install clang and nasm on Windows i686. * fix: Run macman.exe after adding it to the path. * fix: Add clang and nasm for Windows x86_64 GNU.
* feat: Make Rustls the default TLS provider. This switches the default TLS provider to Rustls. It keeps the `native-tls` feature with the same configuration it had before as the default TLS provider. * fix: Fix TlsBackend default options. * fix: Remove hyper-tls from the default-tls feature. It's not used by Rustls. * fix: Update precise dependencies to run MSRV. * fix: Make explicit the dependency version for aws-lc-sys. This allows Reqwest to build on nightly with a version of aws-lc-sys that works and still maintains MSRV. * fix: Use aws-lc-rs as provider when both ring and aws-lc-rs are enabled. This should be a corner case since only one feature should be enable at a time, but some checks enable all features. Favor aws-lc-rs when all features are enabled. * fix: Fix feature config formatting. * fix: Reverse precise dep ordering. This ensures that the MSRV for all dependencies are met. * fix: Pin hyper-rustls precise version. * fix: Build `default_rustls_crypto_provider` only when rustls is enabled. * fix: Make rustls-tls feature work without default-tls. * fix: Remove unused dependency. Update the MSRV check to use precise dependency versions. * fix: Install Crypto Provider to run the HTTP3 tests. Since both Ring and AWS-LC-RS are supported, we need to explicitly install the correct Crypto Provider before configuring the server. * fix: Update nightly run with the precise version of aws-lc-sys. * fix: Use prebuilt NASM compiled code on Windows. See: https://github.com/aws/aws-lc-rs/blob/f0a6350abb247b413ffbf8ae8d8e1eb3bb1d4e66/aws-lc-sys/README.md?plain=1#L37 * fix: Update the precise version of aws-lc-rs for nightly builds. * fix: Update all Windows targets to use prebuilt nasm binaries. * fix: Set LIBCLANG_PATH for windows builds. * fix: Install clang and nasm on Windows i686. * fix: Run macman.exe after adding it to the path. * fix: Add clang and nasm for Windows x86_64 GNU.
* feat: Make Rustls the default TLS provider. This switches the default TLS provider to Rustls. It keeps the `native-tls` feature with the same configuration it had before as the default TLS provider. * fix: Fix TlsBackend default options. * fix: Remove hyper-tls from the default-tls feature. It's not used by Rustls. * fix: Update precise dependencies to run MSRV. * fix: Make explicit the dependency version for aws-lc-sys. This allows Reqwest to build on nightly with a version of aws-lc-sys that works and still maintains MSRV. * fix: Use aws-lc-rs as provider when both ring and aws-lc-rs are enabled. This should be a corner case since only one feature should be enable at a time, but some checks enable all features. Favor aws-lc-rs when all features are enabled. * fix: Fix feature config formatting. * fix: Reverse precise dep ordering. This ensures that the MSRV for all dependencies are met. * fix: Pin hyper-rustls precise version. * fix: Build `default_rustls_crypto_provider` only when rustls is enabled. * fix: Make rustls-tls feature work without default-tls. * fix: Remove unused dependency. Update the MSRV check to use precise dependency versions. * fix: Install Crypto Provider to run the HTTP3 tests. Since both Ring and AWS-LC-RS are supported, we need to explicitly install the correct Crypto Provider before configuring the server. * fix: Update nightly run with the precise version of aws-lc-sys. * fix: Use prebuilt NASM compiled code on Windows. See: https://github.com/aws/aws-lc-rs/blob/f0a6350abb247b413ffbf8ae8d8e1eb3bb1d4e66/aws-lc-sys/README.md?plain=1#L37 * fix: Update the precise version of aws-lc-rs for nightly builds. * fix: Update all Windows targets to use prebuilt nasm binaries. * fix: Set LIBCLANG_PATH for windows builds. * fix: Install clang and nasm on Windows i686. * fix: Run macman.exe after adding it to the path. * fix: Add clang and nasm for Windows x86_64 GNU.
* feat: Make Rustls the default TLS provider. This switches the default TLS provider to Rustls. It keeps the `native-tls` feature with the same configuration it had before as the default TLS provider. * fix: Fix TlsBackend default options. * fix: Remove hyper-tls from the default-tls feature. It's not used by Rustls. * fix: Update precise dependencies to run MSRV. * fix: Make explicit the dependency version for aws-lc-sys. This allows Reqwest to build on nightly with a version of aws-lc-sys that works and still maintains MSRV. * fix: Use aws-lc-rs as provider when both ring and aws-lc-rs are enabled. This should be a corner case since only one feature should be enable at a time, but some checks enable all features. Favor aws-lc-rs when all features are enabled. * fix: Fix feature config formatting. * fix: Reverse precise dep ordering. This ensures that the MSRV for all dependencies are met. * fix: Pin hyper-rustls precise version. * fix: Build `default_rustls_crypto_provider` only when rustls is enabled. * fix: Make rustls-tls feature work without default-tls. * fix: Remove unused dependency. Update the MSRV check to use precise dependency versions. * fix: Install Crypto Provider to run the HTTP3 tests. Since both Ring and AWS-LC-RS are supported, we need to explicitly install the correct Crypto Provider before configuring the server. * fix: Update nightly run with the precise version of aws-lc-sys. * fix: Use prebuilt NASM compiled code on Windows. See: https://github.com/aws/aws-lc-rs/blob/f0a6350abb247b413ffbf8ae8d8e1eb3bb1d4e66/aws-lc-sys/README.md?plain=1#L37 * fix: Update the precise version of aws-lc-rs for nightly builds. * fix: Update all Windows targets to use prebuilt nasm binaries. * fix: Set LIBCLANG_PATH for windows builds. * fix: Install clang and nasm on Windows i686. * fix: Run macman.exe after adding it to the path. * fix: Add clang and nasm for Windows x86_64 GNU.
* feat: Make Rustls the default TLS provider. This switches the default TLS provider to Rustls. It keeps the `native-tls` feature with the same configuration it had before as the default TLS provider. * fix: Fix TlsBackend default options. * fix: Remove hyper-tls from the default-tls feature. It's not used by Rustls. * fix: Update precise dependencies to run MSRV. * fix: Make explicit the dependency version for aws-lc-sys. This allows Reqwest to build on nightly with a version of aws-lc-sys that works and still maintains MSRV. * fix: Use aws-lc-rs as provider when both ring and aws-lc-rs are enabled. This should be a corner case since only one feature should be enable at a time, but some checks enable all features. Favor aws-lc-rs when all features are enabled. * fix: Fix feature config formatting. * fix: Reverse precise dep ordering. This ensures that the MSRV for all dependencies are met. * fix: Pin hyper-rustls precise version. * fix: Build `default_rustls_crypto_provider` only when rustls is enabled. * fix: Make rustls-tls feature work without default-tls. * fix: Remove unused dependency. Update the MSRV check to use precise dependency versions. * fix: Install Crypto Provider to run the HTTP3 tests. Since both Ring and AWS-LC-RS are supported, we need to explicitly install the correct Crypto Provider before configuring the server. * fix: Update nightly run with the precise version of aws-lc-sys. * fix: Use prebuilt NASM compiled code on Windows. See: https://github.com/aws/aws-lc-rs/blob/f0a6350abb247b413ffbf8ae8d8e1eb3bb1d4e66/aws-lc-sys/README.md?plain=1#L37 * fix: Update the precise version of aws-lc-rs for nightly builds. * fix: Update all Windows targets to use prebuilt nasm binaries. * fix: Set LIBCLANG_PATH for windows builds. * fix: Install clang and nasm on Windows i686. * fix: Run macman.exe after adding it to the path. * fix: Add clang and nasm for Windows x86_64 GNU.
* feat: Make Rustls the default TLS provider. This switches the default TLS provider to Rustls. It keeps the `native-tls` feature with the same configuration it had before as the default TLS provider. * fix: Fix TlsBackend default options. * fix: Remove hyper-tls from the default-tls feature. It's not used by Rustls. * fix: Update precise dependencies to run MSRV. * fix: Make explicit the dependency version for aws-lc-sys. This allows Reqwest to build on nightly with a version of aws-lc-sys that works and still maintains MSRV. * fix: Use aws-lc-rs as provider when both ring and aws-lc-rs are enabled. This should be a corner case since only one feature should be enable at a time, but some checks enable all features. Favor aws-lc-rs when all features are enabled. * fix: Fix feature config formatting. * fix: Reverse precise dep ordering. This ensures that the MSRV for all dependencies are met. * fix: Pin hyper-rustls precise version. * fix: Build `default_rustls_crypto_provider` only when rustls is enabled. * fix: Make rustls-tls feature work without default-tls. * fix: Remove unused dependency. Update the MSRV check to use precise dependency versions. * fix: Install Crypto Provider to run the HTTP3 tests. Since both Ring and AWS-LC-RS are supported, we need to explicitly install the correct Crypto Provider before configuring the server. * fix: Update nightly run with the precise version of aws-lc-sys. * fix: Use prebuilt NASM compiled code on Windows. See: https://github.com/aws/aws-lc-rs/blob/f0a6350abb247b413ffbf8ae8d8e1eb3bb1d4e66/aws-lc-sys/README.md?plain=1#L37 * fix: Update the precise version of aws-lc-rs for nightly builds. * fix: Update all Windows targets to use prebuilt nasm binaries. * fix: Set LIBCLANG_PATH for windows builds. * fix: Install clang and nasm on Windows i686. * fix: Run macman.exe after adding it to the path. * fix: Add clang and nasm for Windows x86_64 GNU.
* feat: Make Rustls the default TLS provider. This switches the default TLS provider to Rustls. It keeps the `native-tls` feature with the same configuration it had before as the default TLS provider. * fix: Fix TlsBackend default options. * fix: Remove hyper-tls from the default-tls feature. It's not used by Rustls. * fix: Update precise dependencies to run MSRV. * fix: Make explicit the dependency version for aws-lc-sys. This allows Reqwest to build on nightly with a version of aws-lc-sys that works and still maintains MSRV. * fix: Use aws-lc-rs as provider when both ring and aws-lc-rs are enabled. This should be a corner case since only one feature should be enable at a time, but some checks enable all features. Favor aws-lc-rs when all features are enabled. * fix: Fix feature config formatting. * fix: Reverse precise dep ordering. This ensures that the MSRV for all dependencies are met. * fix: Pin hyper-rustls precise version. * fix: Build `default_rustls_crypto_provider` only when rustls is enabled. * fix: Make rustls-tls feature work without default-tls. * fix: Remove unused dependency. Update the MSRV check to use precise dependency versions. * fix: Install Crypto Provider to run the HTTP3 tests. Since both Ring and AWS-LC-RS are supported, we need to explicitly install the correct Crypto Provider before configuring the server. * fix: Update nightly run with the precise version of aws-lc-sys. * fix: Use prebuilt NASM compiled code on Windows. See: https://github.com/aws/aws-lc-rs/blob/f0a6350abb247b413ffbf8ae8d8e1eb3bb1d4e66/aws-lc-sys/README.md?plain=1#L37 * fix: Update the precise version of aws-lc-rs for nightly builds. * fix: Update all Windows targets to use prebuilt nasm binaries. * fix: Set LIBCLANG_PATH for windows builds. * fix: Install clang and nasm on Windows i686. * fix: Run macman.exe after adding it to the path. * fix: Add clang and nasm for Windows x86_64 GNU.
This switches the default TLS provider to Rustls. It keeps the `native-tls` feature with the same configuration it had before as the default TLS provider. * fix: Use prebuilt NASM compiled code on Windows. See: https://github.com/aws/aws-lc-rs/blob/f0a6350abb247b413ffbf8ae8d8e1eb3bb1d4e66/aws-lc-sys/README.md?plain=1#L37 * fix: Update the precise version of aws-lc-rs for nightly builds. * fix: Update all Windows targets to use prebuilt nasm binaries. ref #2897 ref #2723 Co-authored-by: David Calavera <1050+calavera@users.noreply.github.com>
This switches the default TLS provider to Rustls. It keeps the
native-tlsfeature with the same configuration it had before as the default TLS provider.I'm new to the codebase, so let me know all the things I've missed. I've done the minimal work to see what the level or effort was to change the TLS provider. Tests seem to pass.
Todo:
rustls-platform-verifier. See Consider switching torustlsas the default #2025 (comment). WIP@seanmonstar I'll really appreciate the feedback and guidance. This was the number 1 problem people bumped into when using Reqwest on AWS Lambda functions written in Rust when I maintained the Rust Runtime for Lambda.
Fixes #2723