Historically PyPI was only available over either HTTP or unvalidated HTTPS, and 
over time we’ve been pushing more and more traffic onto HTTPS. In Warehouse the 
decision was made to *not* redirect “API” URLs from HTTP to HTTPS, but to 
rather return an error accessing them from HTTP. This is because while logged 
in views have HSTS to ensure HTTPS in the browser (and with humans manually 
entering them into the URL bar regularly they are more error prone) APIs which 
are typically accessed by automated clients with an URL configured or hardcoded 
typically do not respect HSTS, so if you had a script that did ``curl 
http://pypi.python.org/simple/`` <http://pypi.python.org/simple/%60%60>, it 
would silently get redirects to https and appear to “work”, but you wouldn’t 
get any of the security properties of TLS because an attacker would just 
intercept the request prior to the redirect happening.

Today I’ve backported this changed to the current production deployment of 
PyPI, which means that you can no longer access /simple/ and /packages/ over 
HTTP and you will have to directly go to HTTPS. For most people this should 
have no effect, because most tooling should be defaulting to HTTPS anyways, 
however if you’re using a significantly old version of tooling, it may still be 
defaulting to the HTTP url and will now stop functioning.

The recommended remediation is to upgrade your tooling to versions that support 
verified TLS connections and which default to the proper HTTPS URLs.
_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to