Skip to content
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

Add support for rustls-platform-verifier #2159

Open
djc opened this issue Mar 6, 2024 · 10 comments · May be fixed by #2286
Open

Add support for rustls-platform-verifier #2159

djc opened this issue Mar 6, 2024 · 10 comments · May be fixed by #2286

Comments

@djc
Copy link
Contributor

djc commented Mar 6, 2024

We recently released the rustls-platform-verifier crate, and the rustls team believes this is probably the best option for most client use cases (especially on platforms like Windows, macOS, iOS and Android), since it reuses the platform verifier instead of more naively trying to find installed roots (which might be subject to additional constraints when used in the platform verifier).

This has been used for years inside the 1Password multi-platform client codebase, so it is more mature than it might seem at first glance.

I actually started adding support for this, but unfortunately it doesn't currently have great support for adding additional roots on some platforms, so the current form of feature additivity that reqwest uses (adding both webpki-roots and rustls-native-certs) doesn't work on some platforms (it only works on Linux, where it is needed the most because there is no real platform verifier).

I think this should probably become the default going forward.

@djc
Copy link
Contributor Author

djc commented Apr 25, 2024

@seanmonstar any feedback?

@seanmonstar
Copy link
Owner

Seems like a good goal. You mentioned that it can't currently support the feature additivity that reqwest exposes. Will it at some point? Or is that a non-goal?

@cpu
Copy link
Contributor

cpu commented Apr 26, 2024

Will it at some point? Or is that a non-goal?

There's an existing issue upstream for the missing feature: rustls/rustls-platform-verifier#58 I think we're all in favour, it just hasn't been implemented. IMO knowing it's a blocker for reqwest would help motivate getting around to it 👍

@djc
Copy link
Contributor Author

djc commented Apr 26, 2024

Not sure it should be a blocker for reqwest -- but yes, we do want to support it eventually. While it is opt-in for reqwest, I don't think it needs to be a blocker?

@seanmonstar
Copy link
Owner

Just to ease finding the status, as commented in #2286: it's blocked on being an additive feature.

@djc
Copy link
Contributor Author

djc commented Oct 13, 2024

(I think the work to enable that is pretty much done upstream, just needs a release.)

@ofek
Copy link

ofek commented Oct 13, 2024

Is this the proper way to use the library until there is an official feature? The documentation mentions that applications should call the install default method early in main but I can't find examples on applications doing so. I can only find an example from rustup doing it manually.

@djc
Copy link
Contributor Author

djc commented Oct 14, 2024

Is this the proper way to use the library until there is an official feature? The documentation mentions that applications should call the install default method early in main but I can't find examples on applications doing so. I can only find an example from rustup doing it manually.

Yup, that looks fine.

@ofek
Copy link

ofek commented Oct 14, 2024

Great, thanks! Is there an example of setting it globally at the start of an application so one does not have to create a client manually?

@djc
Copy link
Contributor Author

djc commented Oct 15, 2024

Great, thanks! Is there an example of setting it globally at the start of an application so one does not have to create a client manually?

That's not a thing for the ServerCertVerifier, only for the CryptoProvider, see rustls/rustls#1821.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants