Inject SSL context into urllib3 ProxyManager, too#13343
Merged
Conversation
When a proxy is involved, requests uses a urllib3 proxy manager instead of the pool manager. We only inject our SSL context into the pool manager, which means the truststore context is lost when a proxy is set. We can modify proxy manager construction by overriding proxy_manager_for on the requests adapters.
uranusjr
approved these changes
Apr 22, 2025
|
@ichard26 I currently have no access to the system I encountered it, but I will test it in roughly 2 weeks. Thanks a lot for investigating it! |
Member
Author
|
We're not in a rush, no worries! |
|
@ichard26 I finally got to testing your code change and it actually fixes the issue for me! So I did get a reproducing environment (working with pip < 24.2) and updated to the latest pip afterwards the issue was the same as described in #13288 . When installing the zip file via pip I was afterwards able to install packages without any other change to the env. Installing then again pip 25.1.1 and the issue appeared again. Thanks a lot for the investigation and the fix! |
Member
Author
|
Thank you @schribl, glad to hear that this fixes the issue for you! |
This was referenced May 26, 2025
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When a proxy is involved, requests uses a urllib3 proxy manager instead of the pool manager. We only inject our SSL context into the pool manager, which means the truststore context is lost when a proxy is set.
We can modify proxy manager construction by overriding
proxy_manager_foron the requests adapters as described here: psf/requests#6109 (comment)I have no idea how to write a test for this (at least for the time being), so @schribl I'd appreciate if you could check whether this fixes your issue or not. You can install this branch via
pip install https://github.com/ichard26/pip/archive/bug/lost-ssl-context.zip. No rush!Should fix #13288.