pypi / support

Issue tracker for support requests related to using https://pypi.org
93 stars 48 forks source link

Network throttling for files.pythonhosted.org #3833

Open 0x2b3bfa0 opened 5 months ago

0x2b3bfa0 commented 5 months ago

When downloading a 700+ MB wheel^1 from files.pythonhosted.org using a Google Cloud Compute Engine instance, I noticed that the first ~50 % of the file was being downloaded at full speed (~60 MB/s) and then it got throttled to less than ~1 MB/s.

At first, I wasn't able to reproduce the issue on my local workstation, where the download speed remained high and constant (~30 MB/s) across the process. On the Google Cloud instance, though, I was able to reliably reproduce the described throttling.

Then, I noticed that the domain resolved to a different IP address locally and on Google Cloud, due to the differences in geographical location. I was able to reproduce the issue also on my local workstation by using the IP address found on the Google Cloud DNS resolution.

Is Fastly throttling download speeds for 199.232.96.223, but not for 151.101.132.223?

Good (local)

$ ping files.pythonhosted.org
PING dualstack.python.map.fastly.net (151.101.132.223): 56 data bytes
64 bytes from 151.101.132.223: icmp_seq=0 ttl=58 time=5.247 ms
64 bytes from 151.101.132.223: icmp_seq=1 ttl=58 time=5.403 ms
64 bytes from 151.101.132.223: icmp_seq=2 ttl=58 time=7.611 ms

--- dualstack.python.map.fastly.net ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 5.247/6.087/7.611/1.080 ms

Bad (Google Cloud)

$ ping files.pythonhosted.org
PING dualstack.python.map.fastly.net (199.232.96.223) 56(84) bytes of data.
64 bytes from 199.232.96.223: icmp_seq=1 ttl=61 time=32.3 ms
64 bytes from 199.232.96.223: icmp_seq=2 ttl=61 time=32.1 ms
64 bytes from 199.232.96.223: icmp_seq=3 ttl=61 time=32.0 ms

--- dualstack.python.map.fastly.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2957ms
rtt min/avg/max/mdev = 31.950/32.127/32.291/0.139 ms

Fastly Debug

#### Good ``` ewogICJnZW9pcCI6IHsKICAgICJjaSI6ICJsYSBwdWVibGEgZGUgYWxmaW5kZW4iLAogICAgInN0IjogIloiLAogICAgImN0IjogInNwYWluIiwKICAgICJjbyI6ICJFVSIsCiAgICAiY19pcCI6ICJSRURBQ1RFRCIsCiAgICAiY19hc24iOiAiNTcyNjkiLAogICAgImNfYXNuX25hbWUiOiAiZGlnaSBzcGFpbiB0ZWxlY29tIHMubC4iLAogICAgInJfaXAiOiAiMTcyLjcwLjU5LjU3IiwKICAgICJyX2FzbiI6ICIxMzMzNSIsCiAgICAicl9hc25fbmFtZSI6ICJjbG91ZGZsYXJlIGluYy4iLAogICAgInJfY2kiOiAibWFkcmlkIiwKICAgICJyX3N0IjogIk0iLAogICAgInJfY3QiOiAic3BhaW4iLAogICAgInJfY28iOiAiRVUiCiAgfSwKICAicG9wTGF0ZW5jeSI6IHsKICAgICJhbXMiOiAzOSwKICAgICJibWEiOiA1NSwKICAgICJicnUiOiAzOSwKICAgICJjcGgiOiA1MCwKICAgICJkdWIiOiA1MCwKICAgICJlZGRmIjogMzUsCiAgICAiZWdsYyI6IDMzLAogICAgImV0b3UiOiA0NSwKICAgICJmY28iOiAzNSwKICAgICJoZWwiOiA2MCwKICAgICJsZnBnIjogMjksCiAgICAibGhyIjogMjksCiAgICAibGluIjogMjgsCiAgICAibGlzIjogMjgsCiAgICAibG9uIjogMzQsCiAgICAibWFkIjogNywKICAgICJtYW4iOiA0NCwKICAgICJtcnMiOiAyMSwKICAgICJtdWMiOiA0MSwKICAgICJteHAiOiAyOCwKICAgICJvc2wiOiA1NywKICAgICJwbW8iOiA1OSwKICAgICJzb2YiOiA2MSwKICAgICJ2aWUiOiA1MSwKICAgICJhbnkiOiA3CiAgfSwKICAicG9wQXNzaWdubWVudHMiOiB7CiAgICAiYWMiOiAibWFkIiwKICAgICJhcyI6ICJtYWQiCiAgfSwKICAicmVxdWVzdCI6IHsKICAgICJyZXNvbHZlcl9pcCI6ICIxNzIuNzAuNTkuNTciLAogICAgInJlc29sdmVyX2FzX25hbWUiOiAiQ0xPVURGTEFSRU5FVCwgVVMiLAogICAgInJlc29sdmVyX2FzX251bWJlciI6ICIxMzMzNSIsCiAgICAicmVzb2x2ZXJfY291bnRyeV9jb2RlIjogIlVTIiwKICAgICJjbGllbnRfaXAiOiAiUkVEQUNURUQiLAogICAgImNsaWVudF9hc19uYW1lIjogIkRJR0lTUEFJTlRFTEVDT00sIEVTIiwKICAgICJjbGllbnRfYXNfbnVtYmVyIjogIjU3MjY5IiwKICAgICJ0aW1lIjogIjIwMjQtMDQtMDVUMDM6Mjg6NDMuMDAwWiIsCiAgICAiaG9zdCI6ICJ3d3cuZmFzdGx5LWRlYnVnLmNvbSIsCiAgICAiYWNjZXB0IjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuNyIsCiAgICAidXNlcmFnZW50IjogIk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzcpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjMuMC4wLjAgU2FmYXJpLzUzNy4zNiIsCiAgICAiYWNjZXB0bGFuZ3VhZ2UiOiAiZXMtRVMsZXM7cT0wLjksZW4tVVM7cT0wLjgsZW47cT0wLjciLAogICAgImFjY2VwdGVuY29kaW5nIjogImd6aXAiLAogICAgImZhc3RseXNlcnZlcmlwIjogIjE1MS4xMDEuMC42NCIsCiAgICAieGZmIjogIlJFREFDVEVEIiwKICAgICJkYXRhY2VudGVyIjogIk1BRCIsCiAgICAiYmFuZHdpZHRoX21icHMiOiAiMTAwLjE2IiwKICAgICJjd25kIjogMjAyLAogICAgIm5leHRob3AiOiAiMTcyLjIzLjE2Ni4xIiwKICAgICJydHQiOiA4LjAzLAogICAgImRlbHRhX3JldHJhbnMiOiAwLAogICAgInRvdGFsX3JldHJhbnMiOiAwCiAgfQp9Cg== ``` #### Bad ``` ewogICJnZW9pcCI6IHsKICAgICJjaSI6ICJjb3VuY2lsIGJsdWZmcyIsCiAgICAic3QiOiAiSUEiLAogICAgImN0IjogInVuaXRlZCBzdGF0ZXMiLAogICAgImNvIjogIk5BIiwKICAgICJjX2lwIjogIjM0LjQxLjIyNy40NCIsCiAgICAiY19hc24iOiAiMzk2OTgyIiwKICAgICJjX2Fzbl9uYW1lIjogImdvb2dsZSBsbGMiLAogICAgInJfaXAiOiAiNzQuMTI1LjcyLjEzOSIsCiAgICAicl9hc24iOiAiMTUxNjkiLAogICAgInJfYXNuX25hbWUiOiAiZ29vZ2xlIGxsYyIsCiAgICAicl9jaSI6ICJjb3VuY2lsIGJsdWZmcyIsCiAgICAicl9zdCI6ICJJQSIsCiAgICAicl9jdCI6ICJ1bml0ZWQgc3RhdGVzIiwKICAgICJyX2NvIjogIk5BIgogIH0sCiAgInBvcExhdGVuY3kiOiB7CiAgICAiYm9zIjogMTQ4LAogICAgImNtaCI6IDE2NiwKICAgICJkZW4iOiAxMTUsCiAgICAiZHR3IjogMTM1LAogICAgImV3ciI6IDE2OCwKICAgICJnbnYiOiAxNDQsCiAgICAiaG5sIjogMTkyLAogICAgImlhaCI6IDEzNSwKICAgICJrYXRsIjogMTQyLAogICAgImtiZmkiOiAxNTcsCiAgICAia2J1ciI6IDE1MSwKICAgICJrY2dzIjogMTMwLAogICAgImtkYWwiOiAxMjAsCiAgICAia2RmdyI6IDEyMywKICAgICJrZnR5IjogMTMwLAogICAgImtpYWQiOiAxMjksCiAgICAia2lncSI6IDExNSwKICAgICJranlvIjogMTI5LAogICAgImtsb3QiOiAxMTYsCiAgICAia21pYSI6IDE1MCwKICAgICJrcGFvIjogMTUzLAogICAgImtwZGsiOiAxMjgsCiAgICAia3JudCI6IDE0NiwKICAgICJrdGViIjogMTQ2LAogICAgImt3aHAiOiAxNTAsCiAgICAibGNrIjogMTY1LAogICAgImxnYSI6IDEzMywKICAgICJtY2kiOiAxMjksCiAgICAibXNwIjogMTI3LAogICAgInBkeCI6IDE3NiwKICAgICJwaHgiOiAxNDUsCiAgICAic2pjIjogMTQ3LAogICAgInN0bCI6IDEyOSwKICAgICJzdHAiOiAxNTgsCiAgICAieXVsIjogMTQ1LAogICAgInl2ciI6IDE2MCwKICAgICJ5eWMiOiAxNjcsCiAgICAieXl6IjogMTI4LAogICAgImFueSI6IDExOAogIH0sCiAgInBvcEFzc2lnbm1lbnRzIjogewogICAgImFjIjogImNoaSIsCiAgICAiYXMiOiAiY2hpIgogIH0sCiAgInJlcXVlc3QiOiB7CiAgICAicmVzb2x2ZXJfaXAiOiAiMTcyLjI1My4yMjEuMTA4IiwKICAgICJyZXNvbHZlcl9hc19uYW1lIjogIkdPT0dMRSwgVVMiLAogICAgInJlc29sdmVyX2FzX251bWJlciI6ICIxNTE2OSIsCiAgICAicmVzb2x2ZXJfY291bnRyeV9jb2RlIjogIlVTIiwKICAgICJjbGllbnRfaXAiOiAiMzQuNDEuMjI3LjQ0IiwKICAgICJjbGllbnRfYXNfbmFtZSI6ICJHT09HTEUtQ0xPVUQtUExBVEZPUk0sIFVTIiwKICAgICJjbGllbnRfYXNfbnVtYmVyIjogIjM5Njk4MiIsCiAgICAidGltZSI6ICIyMDI0LTA0LTA1VDAzOjMyOjMyLjAwMFoiLAogICAgImhvc3QiOiAid3d3LmZhc3RseS1kZWJ1Zy5jb20iLAogICAgImFjY2VwdCI6ICJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjciLAogICAgInVzZXJhZ2VudCI6ICJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTIzLjAuMC4wIFNhZmFyaS81MzcuMzYiLAogICAgImFjY2VwdGxhbmd1YWdlIjogImVzLUVTLGVzO3E9MC45LGVuLVVTO3E9MC44LGVuO3E9MC43IiwKICAgICJhY2NlcHRlbmNvZGluZyI6ICJnemlwIiwKICAgICJmYXN0bHlzZXJ2ZXJpcCI6ICIxNTEuMTAxLjAuNjQiLAogICAgInhmZiI6ICIzNC40MS4yMjcuNDQiLAogICAgImRhdGFjZW50ZXIiOiAiQ0hJIiwKICAgICJiYW5kd2lkdGhfbWJwcyI6ICI3Ljk4IiwKICAgICJjd25kIjogMzc4LAogICAgIm5leHRob3AiOiAiMTcyLjI3LjMyLjEiLAogICAgInJ0dCI6IDExNS4yNTUsCiAgICAiZGVsdGFfcmV0cmFucyI6IDAsCiAgICAidG90YWxfcmV0cmFucyI6IDAKICB9Cn0= ```

DNS Resolution

#### Good ```console (paste your output after the line with the dig command) $ dig pypi.org A ; <<>> DiG 9.10.6 <<>> pypi.org A ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22030 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;pypi.org. IN A ;; ANSWER SECTION: pypi.org. 75299 IN A 151.101.128.223 pypi.org. 75299 IN A 151.101.64.223 pypi.org. 75299 IN A 151.101.192.223 pypi.org. 75299 IN A 151.101.0.223 ;; Query time: 39 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) ;; WHEN: Fri Apr 05 05:38:17 CEST 2024 ;; MSG SIZE rcvd: 101 ``` ```console (paste your output after the line with the dig command) $ dig pypi.org AAAA ; <<>> DiG 9.10.6 <<>> pypi.org AAAA ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31968 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;pypi.org. IN AAAA ;; ANSWER SECTION: pypi.org. 76647 IN AAAA 2a04:4e42::223 pypi.org. 76647 IN AAAA 2a04:4e42:400::223 pypi.org. 76647 IN AAAA 2a04:4e42:600::223 pypi.org. 76647 IN AAAA 2a04:4e42:200::223 ;; Query time: 53 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) ;; WHEN: Fri Apr 05 05:38:30 CEST 2024 ;; MSG SIZE rcvd: 149 ``` ```console (paste your output after the line with the dig command) $ dig files.pythonhosted.org A ; <<>> DiG 9.10.6 <<>> files.pythonhosted.org A ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45283 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;files.pythonhosted.org. IN A ;; ANSWER SECTION: files.pythonhosted.org. 83255 IN CNAME dualstack.python.map.fastly.net. dualstack.python.map.fastly.net. 26 IN A 151.101.132.223 ;; Query time: 53 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) ;; WHEN: Fri Apr 05 05:38:41 CEST 2024 ;; MSG SIZE rcvd: 112 ``` ```console (paste your output after the line with the dig command) $ dig files.pythonhosted.org AAAA ; <<>> DiG 9.10.6 <<>> files.pythonhosted.org AAAA ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26152 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;files.pythonhosted.org. IN AAAA ;; ANSWER SECTION: files.pythonhosted.org. 86388 IN CNAME dualstack.python.map.fastly.net. dualstack.python.map.fastly.net. 18 IN AAAA 2a04:4e42:1f::223 ;; Query time: 7 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) ;; WHEN: Fri Apr 05 05:38:57 CEST 2024 ;; MSG SIZE rcvd: 124 ``` #### Bad ```console (paste your output after the line with the dig command) $ dig pypi.org A ; <<>> DiG 9.18.24-1-Debian <<>> pypi.org A ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9156 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;pypi.org. IN A ;; ANSWER SECTION: pypi.org. 21600 IN A 151.101.64.223 pypi.org. 21600 IN A 151.101.128.223 pypi.org. 21600 IN A 151.101.0.223 pypi.org. 21600 IN A 151.101.192.223 ;; Query time: 3 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Fri Apr 05 03:37:05 UTC 2024 ;; MSG SIZE rcvd: 101 ``` ```console (paste your output after the line with the dig command) $ dig pypi.org AAAA ; <<>> DiG 9.18.24-1-Debian <<>> pypi.org AAAA ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42909 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;pypi.org. IN AAAA ;; ANSWER SECTION: pypi.org. 21600 IN AAAA 2a04:4e42:600::223 pypi.org. 21600 IN AAAA 2a04:4e42:400::223 pypi.org. 21600 IN AAAA 2a04:4e42:200::223 pypi.org. 21600 IN AAAA 2a04:4e42::223 ;; Query time: 3 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Fri Apr 05 03:37:14 UTC 2024 ;; MSG SIZE rcvd: 149 ``` ```console (paste your output after the line with the dig command) $ dig files.pythonhosted.org A ; <<>> DiG 9.18.24-1-Debian <<>> files.pythonhosted.org A ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16264 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;files.pythonhosted.org. IN A ;; ANSWER SECTION: files.pythonhosted.org. 8485 IN CNAME dualstack.python.map.fastly.net. dualstack.python.map.fastly.net. 30 IN A 199.232.96.223 ;; Query time: 15 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Fri Apr 05 03:37:31 UTC 2024 ;; MSG SIZE rcvd: 112 ``` ```console (paste your output after the line with the dig command) $ dig files.pythonhosted.org AAAA ; <<>> DiG 9.18.24-1-Debian <<>> files.pythonhosted.org AAAA ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15984 ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;files.pythonhosted.org. IN AAAA ;; ANSWER SECTION: files.pythonhosted.org. 19 IN CNAME dualstack.python.map.fastly.net. dualstack.python.map.fastly.net. 11 IN AAAA 2a04:4e42:2000::223 dualstack.python.map.fastly.net. 11 IN AAAA 2a04:4e42:3000::223 dualstack.python.map.fastly.net. 11 IN AAAA 2a04:4e42:4000::223 dualstack.python.map.fastly.net. 11 IN AAAA 2a04:4e42:5000::223 ;; ADDITIONAL SECTION: dualstack.python.map.fastly.net. 19 IN A 199.232.96.223 ;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Fri Apr 05 03:37:42 UTC 2024 ;; MSG SIZE rcvd: 224 ```

Traceroutes / IPv4

#### Good ```console (paste your output after the line with the traceroute command) # traceroute --icmp pypi.org traceroute: Warning: pypi.org has multiple addresses; using 151.101.64.223 traceroute to pypi.org (151.101.64.223), 64 hops max, 72 byte packets 1 192.168.1.1 (192.168.1.1) 3.533 ms 1.542 ms 4.531 ms 2 10.0.0.1 (10.0.0.1) 5.746 ms 9.024 ms 5.778 ms 3 172.16.1.1 (172.16.1.1) 9.176 ms 6.063 ms 4.993 ms 4 10.220.96.6 (10.220.96.6) 5.193 ms 15.406 ms 6.027 ms 5 81-196-118-216.rdsnet.ro (81.196.118.216) 5.779 ms 5.820 ms 21.479 ms 6 fastly.baja.espanix.net (193.149.1.137) 6.306 ms 5.911 ms 9.312 ms 7 151.101.64.223 (151.101.64.223) 5.711 ms 6.411 ms 4.974 ms ``` ```console (paste your output after the line with the traceroute command) # traceroute --icmp files.pythonhosted.org traceroute to dualstack.python.map.fastly.net (151.101.132.223), 64 hops max, 72 byte packets 1 192.168.1.1 (192.168.1.1) 4.742 ms 4.116 ms 5.390 ms 2 10.0.0.1 (10.0.0.1) 6.575 ms 5.618 ms 6.411 ms 3 172.16.0.1 (172.16.0.1) 5.537 ms 5.281 ms 7.764 ms 4 * * * 5 86-120-71-48.rdsnet.ro (86.120.71.48) 10.439 ms 22.481 ms 31.988 ms 6 * * * 7 151.101.132.223 (151.101.132.223) 9.481 ms 7.458 ms 6.304 ms ``` #### Bad ```console (paste your output after the line with the traceroute command) # traceroute --icmp pypi.org traceroute to pypi.org (151.101.0.223), 30 hops max, 60 byte packets 1 * * * 2 103.244.50.100 (103.244.50.100) 10.794 ms 10.792 ms 10.821 ms 3 151.101.0.223 (151.101.0.223) 10.801 ms 10.799 ms 10.798 ms ``` ```console (paste your output after the line with the traceroute command) # traceroute --icmp files.pythonhosted.org traceroute to files.pythonhosted.org (199.232.96.223), 30 hops max, 60 byte packets 1 * * * 2 ae-9.edge8.Denver1.Level3.net (4.68.110.133) 10.242 ms 10.267 ms 10.275 ms 3 * * * 4 4.15.102.114 (4.15.102.114) 31.816 ms 31.835 ms 31.899 ms 5 199.232.96.223 (199.232.96.223) 39.259 ms 39.386 ms 39.425 ms ``` > [!NOTE] > Running the command repeatedly produces slightly different results, e.g. the penultimate hop doesn't always appear or has a diffeerent address.

Traceroutes / IPv6 (If available)

#### Good ```console (paste your output after the line with the traceroute command) $ traceroute6 pypi.org traceroute6: Warning: pypi.org has multiple addresses; using 2a04:4e42:200::223 connect: No route to host ``` ```console (paste your output after the line with the traceroute command) $ traceroute6 files.pythonhosted.org connect: No route to host ``` #### Bad ```console (paste your output after the line with the traceroute command) $ traceroute6 pypi.org traceroute to pypi.org (2a04:4e42:400::223), 30 hops max, 80 byte packets connect: Network is unreachable ``` ```console (paste your output after the line with the traceroute command) $ traceroute6 files.pythonhosted.org traceroute to files.pythonhosted.org (2a04:4e42:3000::223), 30 hops max, 80 byte packets connect: Network is unreachable ```

HTTPS Requests / IPv4

#### Good ```console (paste your output after the line with the curl command) $ curl -vvv -I --ipv4 https://pypi.org/pypi/pip/json % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 151.101.64.223... * TCP_NODELAY set * Connected to pypi.org (151.101.64.223) port 443 (#0) * successfully set certificate verify locations: * CAfile: /etc/ssl/cert.pem CApath: none * TLSv1.2 (OUT), TLS handshake, Client hello (1): } [204 bytes data] * TLSv1.2 (IN), TLS handshake, Server hello (2): { [91 bytes data] * TLSv1.2 (IN), TLS handshake, Certificate (11): { [2851 bytes data] * TLSv1.2 (IN), TLS handshake, Server key exchange (12): { [300 bytes data] * TLSv1.2 (IN), TLS handshake, Server finished (14): { [4 bytes data] * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): } [37 bytes data] * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): } [1 bytes data] * TLSv1.2 (OUT), TLS handshake, Finished (20): } [16 bytes data] * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1): { [1 bytes data] * TLSv1.2 (IN), TLS handshake, Finished (20): { [16 bytes data] * SSL connection using TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305 * Server certificate: * subject: CN=pypi.org * start date: Apr 29 19:53:38 2023 GMT * expire date: May 30 19:53:37 2024 GMT * subjectAltName: host "pypi.org" matched cert's "pypi.org" * issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Atlas R3 DV TLS CA 2023 Q2 * SSL certificate verify ok. > HEAD /pypi/pip/json HTTP/1.1 > Host: pypi.org > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < Connection: keep-alive < Content-Length: 181906 < Content-Type: application/json < Access-Control-Allow-Origin: * < Access-Control-Allow-Headers: Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since < Access-Control-Allow-Methods: GET < Access-Control-Max-Age: 86400 < Access-Control-Expose-Headers: X-PyPI-Last-Serial < X-PyPI-Last-Serial: 21719787 < Cache-Control: max-age=900, public < ETag: "O+TLkX8ZWZ6bRdbVn085vw" < Content-Security-Policy: base-uri 'self'; block-all-mixed-content; connect-src 'self' https://api.github.com/repos/ https://api.github.com/search/issues https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com fastly-insights.com *.fastly-insights.com *.ethicalads.io https://api.pwnedpasswords.com https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/sre/mathmaps/ https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; form-action 'self' https://checkout.stripe.com; frame-ancestors 'none'; frame-src 'none'; img-src 'self' https://pypi-camo.freetls.fastly.net/ https://*.google-analytics.com https://*.googletagmanager.com *.fastly-insights.com *.ethicalads.io ethicalads.blob.core.windows.net; script-src 'self' https://*.googletagmanager.com https://www.google-analytics.com https://ssl.google-analytics.com *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0=' https://cdn.jsdelivr.net/npm/mathjax@3.2.2/ 'sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII=' 'sha256-0POaN8stWYQxhzjKS+/eOfbbJ/u4YHO5ZagJvLpMypo='; style-src 'self' fonts.googleapis.com *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-JLEjeN9e5dGsz5475WyRaoA4eQOdNPxDIeUhclnJDCE=' 'sha256-mQyxHEuwZJqpxCw3SLmc4YOySNKXunyu2Oiz1r3/wAE=' 'sha256-OCf+kv5Asiwp++8PIevKBYSgnNLNUZvxAp4a7wMLuKA=' 'sha256-h5LOiLhk6wiJrGsG5ItM0KimwzWQH/yAcmoJDJL//bY='; worker-src *.fastly-insights.com < Referrer-Policy: origin-when-cross-origin < Accept-Ranges: bytes < Date: Fri, 05 Apr 2024 04:08:56 GMT < X-Served-By: cache-iad-kcgs7200098-IAD, cache-mad2200131-MAD < X-Cache: HIT, HIT < X-Cache-Hits: 1585526, 1 < X-Timer: S1712290136.053925,VS0,VE1 < Vary: Accept-Encoding < Strict-Transport-Security: max-age=31536000; includeSubDomains; preload < X-Frame-Options: deny < X-XSS-Protection: 1; mode=block < X-Content-Type-Options: nosniff < X-Permitted-Cross-Domain-Policies: none < Permissions-Policy: publickey-credentials-create=(self),publickey-credentials-get=(self),accelerometer=(),ambient-light-sensor=(),autoplay=(),battery=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),execution-while-not-rendered=(),execution-while-out-of-viewport=(),fullscreen=(),gamepad=(),geolocation=(),gyroscope=(),hid=(),identity-credentials-get=(),idle-detection=(),local-fonts=(),magnetometer=(),microphone=(),midi=(),otp-credentials=(),payment=(),picture-in-picture=(),screen-wake-lock=(),serial=(),speaker-selection=(),storage-access=(),usb=(),web-share=(),xr-spatial-tracking=() < 0 177k 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 * Connection #0 to host pypi.org left intact HTTP/1.1 200 OK Connection: keep-alive Content-Length: 181906 Content-Type: application/json Access-Control-Allow-Origin: * Access-Control-Allow-Headers: Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since Access-Control-Allow-Methods: GET Access-Control-Max-Age: 86400 Access-Control-Expose-Headers: X-PyPI-Last-Serial X-PyPI-Last-Serial: 21719787 Cache-Control: max-age=900, public ETag: "O+TLkX8ZWZ6bRdbVn085vw" Content-Security-Policy: base-uri 'self'; block-all-mixed-content; connect-src 'self' https://api.github.com/repos/ https://api.github.com/search/issues https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com fastly-insights.com *.fastly-insights.com *.ethicalads.io https://api.pwnedpasswords.com https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/sre/mathmaps/ https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; form-action 'self' https://checkout.stripe.com; frame-ancestors 'none'; frame-src 'none'; img-src 'self' https://pypi-camo.freetls.fastly.net/ https://*.google-analytics.com https://*.googletagmanager.com *.fastly-insights.com *.ethicalads.io ethicalads.blob.core.windows.net; script-src 'self' https://*.googletagmanager.com https://www.google-analytics.com https://ssl.google-analytics.com *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0=' https://cdn.jsdelivr.net/npm/mathjax@3.2.2/ 'sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII=' 'sha256-0POaN8stWYQxhzjKS+/eOfbbJ/u4YHO5ZagJvLpMypo='; style-src 'self' fonts.googleapis.com *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-JLEjeN9e5dGsz5475WyRaoA4eQOdNPxDIeUhclnJDCE=' 'sha256-mQyxHEuwZJqpxCw3SLmc4YOySNKXunyu2Oiz1r3/wAE=' 'sha256-OCf+kv5Asiwp++8PIevKBYSgnNLNUZvxAp4a7wMLuKA=' 'sha256-h5LOiLhk6wiJrGsG5ItM0KimwzWQH/yAcmoJDJL//bY='; worker-src *.fastly-insights.com Referrer-Policy: origin-when-cross-origin Accept-Ranges: bytes Date: Fri, 05 Apr 2024 04:08:56 GMT X-Served-By: cache-iad-kcgs7200098-IAD, cache-mad2200131-MAD X-Cache: HIT, HIT X-Cache-Hits: 1585526, 1 X-Timer: S1712290136.053925,VS0,VE1 Vary: Accept-Encoding Strict-Transport-Security: max-age=31536000; includeSubDomains; preload X-Frame-Options: deny X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Permitted-Cross-Domain-Policies: none Permissions-Policy: publickey-credentials-create=(self),publickey-credentials-get=(self),accelerometer=(),ambient-light-sensor=(),autoplay=(),battery=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),execution-while-not-rendered=(),execution-while-out-of-viewport=(),fullscreen=(),gamepad=(),geolocation=(),gyroscope=(),hid=(),identity-credentials-get=(),idle-detection=(),local-fonts=(),magnetometer=(),microphone=(),midi=(),otp-credentials=(),payment=(),picture-in-picture=(),screen-wake-lock=(),serial=(),speaker-selection=(),storage-access=(),usb=(),web-share=(),xr-spatial-tracking=() * Closing connection 0 ``` ```console (paste your output after the line with the curl command) $ curl -vvv -I --ipv4 https://files.pythonhosted.org/packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 151.101.132.223... * TCP_NODELAY set * Connected to files.pythonhosted.org (151.101.132.223) port 443 (#0) * successfully set certificate verify locations: * CAfile: /etc/ssl/cert.pem CApath: none * TLSv1.2 (OUT), TLS handshake, Client hello (1): } [218 bytes data] * TLSv1.2 (IN), TLS handshake, Server hello (2): { [91 bytes data] * TLSv1.2 (IN), TLS handshake, Certificate (11): { [2827 bytes data] * TLSv1.2 (IN), TLS handshake, Server key exchange (12): { [300 bytes data] * TLSv1.2 (IN), TLS handshake, Server finished (14): { [4 bytes data] * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): } [37 bytes data] * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): } [1 bytes data] * TLSv1.2 (OUT), TLS handshake, Finished (20): } [16 bytes data] * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1): { [1 bytes data] * TLSv1.2 (IN), TLS handshake, Finished (20): { [16 bytes data] * SSL connection using TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305 * Server certificate: * subject: CN=*.pythonhosted.org * start date: Apr 3 20:57:54 2024 GMT * expire date: May 5 20:57:53 2025 GMT * subjectAltName: host "files.pythonhosted.org" matched cert's "*.pythonhosted.org" * issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Atlas R3 DV TLS CA 2024 Q1 * SSL certificate verify ok. > HEAD /packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz HTTP/1.1 > Host: files.pythonhosted.org > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < Connection: keep-alive < Content-Length: 1246072 < Server: nginx < Content-Type: binary/octet-stream < Last-Modified: Tue, 11 Apr 2023 02:19:03 GMT < ETag: "83a177756e2c801d0b3a6f7b0d4f3f7e" < x-amz-meta-btime: 2020-02-26T17:47:37.438Z < x-amz-meta-mtime: 1582739257.438 < x-amz-request-id: 431aaa82fd406965 < x-amz-id-2: aN8hjATHVNmxmBzE1MJZk4GY5YxIwNjjG < x-amz-version-id: 4_z179c51e67f11a0ad8f6c0018_f1191cd4ff993bd3d_d20230411_m021903_c005_v0501003_t0041_u01681179543316 < Cache-Control: max-age=365000000, immutable, public < Accept-Ranges: bytes < Date: Fri, 05 Apr 2024 04:09:08 GMT < Age: 137389 < X-Served-By: cache-iad-kcgs7200149-IAD, cache-mad22037-MAD < X-Cache: HIT, MISS < X-Cache-Hits: 26, 0 < X-Timer: S1712290149.657800,VS0,VE117 < Strict-Transport-Security: max-age=31536000; includeSubDomains; preload < X-Frame-Options: deny < X-XSS-Protection: 1; mode=block < X-Content-Type-Options: nosniff < X-Permitted-Cross-Domain-Policies: none < X-Robots-Header: noindex < x-pypi-file-python-version: source < x-pypi-file-version: 10.0.1 < x-pypi-file-package-type: sdist < x-pypi-file-project: pip < 0 1216k 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 * Connection #0 to host files.pythonhosted.org left intact HTTP/1.1 200 OK Connection: keep-alive Content-Length: 1246072 Server: nginx Content-Type: binary/octet-stream Last-Modified: Tue, 11 Apr 2023 02:19:03 GMT ETag: "83a177756e2c801d0b3a6f7b0d4f3f7e" x-amz-meta-btime: 2020-02-26T17:47:37.438Z x-amz-meta-mtime: 1582739257.438 x-amz-request-id: 431aaa82fd406965 x-amz-id-2: aN8hjATHVNmxmBzE1MJZk4GY5YxIwNjjG x-amz-version-id: 4_z179c51e67f11a0ad8f6c0018_f1191cd4ff993bd3d_d20230411_m021903_c005_v0501003_t0041_u01681179543316 Cache-Control: max-age=365000000, immutable, public Accept-Ranges: bytes Date: Fri, 05 Apr 2024 04:09:08 GMT Age: 137389 X-Served-By: cache-iad-kcgs7200149-IAD, cache-mad22037-MAD X-Cache: HIT, MISS X-Cache-Hits: 26, 0 X-Timer: S1712290149.657800,VS0,VE117 Strict-Transport-Security: max-age=31536000; includeSubDomains; preload X-Frame-Options: deny X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Permitted-Cross-Domain-Policies: none X-Robots-Header: noindex x-pypi-file-python-version: source x-pypi-file-version: 10.0.1 x-pypi-file-package-type: sdist x-pypi-file-project: pip * Closing connection 0 ``` #### Bad ```console (paste your output after the line with the curl command) $ curl -vvv -I --ipv4 https://pypi.org/pypi/pip/json * Trying 151.101.192.223:443... * Connected to pypi.org (151.101.192.223) port 443 (#0) * ALPN: offers h2,http/1.1 * TLSv1.3 (OUT), TLS handshake, Client hello (1): * CAfile: /etc/ssl/certs/ca-certificates.crt * CApath: /etc/ssl/certs * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 * ALPN: server accepted h2 * Server certificate: * subject: CN=pypi.org * start date: Apr 29 19:53:38 2023 GMT * expire date: May 30 19:53:37 2024 GMT * subjectAltName: host "pypi.org" matched cert's "pypi.org" * issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Atlas R3 DV TLS CA 2023 Q2 * SSL certificate verify ok. * using HTTP/2 * h2h3 [:method: HEAD] * h2h3 [:path: /pypi/pip/json] * h2h3 [:scheme: https] * h2h3 [:authority: pypi.org] * h2h3 [user-agent: curl/7.88.1] * h2h3 [accept: */*] * Using Stream ID: 1 (easy handle 0x558aa24c0c80) > HEAD /pypi/pip/json HTTP/2 > Host: pypi.org > user-agent: curl/7.88.1 > accept: */* > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): < HTTP/2 200 HTTP/2 200 < content-type: application/json content-type: application/json < access-control-allow-origin: * access-control-allow-origin: * < access-control-allow-headers: Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since access-control-allow-headers: Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since < access-control-allow-methods: GET access-control-allow-methods: GET < access-control-max-age: 86400 access-control-max-age: 86400 < access-control-expose-headers: X-PyPI-Last-Serial access-control-expose-headers: X-PyPI-Last-Serial < x-pypi-last-serial: 21719787 x-pypi-last-serial: 21719787 < cache-control: max-age=900, public cache-control: max-age=900, public < etag: "O+TLkX8ZWZ6bRdbVn085vw" etag: "O+TLkX8ZWZ6bRdbVn085vw" < content-security-policy: base-uri 'self'; block-all-mixed-content; connect-src 'self' https://api.github.com/repos/ https://api.github.com/search/issues https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com fastly-insights.com *.fastly-insights.com *.ethicalads.io https://api.pwnedpasswords.com https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/sre/mathmaps/ https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; form-action 'self' https://checkout.stripe.com; frame-ancestors 'none'; frame-src 'none'; img-src 'self' https://pypi-camo.freetls.fastly.net/ https://*.google-analytics.com https://*.googletagmanager.com *.fastly-insights.com *.ethicalads.io ethicalads.blob.core.windows.net; script-src 'self' https://*.googletagmanager.com https://www.google-analytics.com https://ssl.google-analytics.com *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0=' https://cdn.jsdelivr.net/npm/mathjax@3.2.2/ 'sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII=' 'sha256-0POaN8stWYQxhzjKS+/eOfbbJ/u4YHO5ZagJvLpMypo='; style-src 'self' fonts.googleapis.com *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-JLEjeN9e5dGsz5475WyRaoA4eQOdNPxDIeUhclnJDCE=' 'sha256-mQyxHEuwZJqpxCw3SLmc4YOySNKXunyu2Oiz1r3/wAE=' 'sha256-OCf+kv5Asiwp++8PIevKBYSgnNLNUZvxAp4a7wMLuKA=' 'sha256-h5LOiLhk6wiJrGsG5ItM0KimwzWQH/yAcmoJDJL//bY='; worker-src *.fastly-insights.com content-security-policy: base-uri 'self'; block-all-mixed-content; connect-src 'self' https://api.github.com/repos/ https://api.github.com/search/issues https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com fastly-insights.com *.fastly-insights.com *.ethicalads.io https://api.pwnedpasswords.com https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/sre/mathmaps/ https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; form-action 'self' https://checkout.stripe.com; frame-ancestors 'none'; frame-src 'none'; img-src 'self' https://pypi-camo.freetls.fastly.net/ https://*.google-analytics.com https://*.googletagmanager.com *.fastly-insights.com *.ethicalads.io ethicalads.blob.core.windows.net; script-src 'self' https://*.googletagmanager.com https://www.google-analytics.com https://ssl.google-analytics.com *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0=' https://cdn.jsdelivr.net/npm/mathjax@3.2.2/ 'sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII=' 'sha256-0POaN8stWYQxhzjKS+/eOfbbJ/u4YHO5ZagJvLpMypo='; style-src 'self' fonts.googleapis.com *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-JLEjeN9e5dGsz5475WyRaoA4eQOdNPxDIeUhclnJDCE=' 'sha256-mQyxHEuwZJqpxCw3SLmc4YOySNKXunyu2Oiz1r3/wAE=' 'sha256-OCf+kv5Asiwp++8PIevKBYSgnNLNUZvxAp4a7wMLuKA=' 'sha256-h5LOiLhk6wiJrGsG5ItM0KimwzWQH/yAcmoJDJL//bY='; worker-src *.fastly-insights.com < referrer-policy: origin-when-cross-origin referrer-policy: origin-when-cross-origin < accept-ranges: bytes accept-ranges: bytes < date: Fri, 05 Apr 2024 07:43:51 GMT date: Fri, 05 Apr 2024 07:43:51 GMT < x-served-by: cache-iad-kcgs7200098-IAD, cache-chi-klot8100029-CHI x-served-by: cache-iad-kcgs7200098-IAD, cache-chi-klot8100029-CHI < x-cache: HIT, HIT x-cache: HIT, HIT < x-cache-hits: 5, 1 x-cache-hits: 5, 1 < x-timer: S1712303031.350852,VS0,VE2 x-timer: S1712303031.350852,VS0,VE2 < vary: Accept-Encoding vary: Accept-Encoding < strict-transport-security: max-age=31536000; includeSubDomains; preload strict-transport-security: max-age=31536000; includeSubDomains; preload < x-frame-options: deny x-frame-options: deny < x-xss-protection: 1; mode=block x-xss-protection: 1; mode=block < x-content-type-options: nosniff x-content-type-options: nosniff < x-permitted-cross-domain-policies: none x-permitted-cross-domain-policies: none < permissions-policy: publickey-credentials-create=(self),publickey-credentials-get=(self),accelerometer=(),ambient-light-sensor=(),autoplay=(),battery=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),execution-while-not-rendered=(),execution-while-out-of-viewport=(),fullscreen=(),gamepad=(),geolocation=(),gyroscope=(),hid=(),identity-credentials-get=(),idle-detection=(),local-fonts=(),magnetometer=(),microphone=(),midi=(),otp-credentials=(),payment=(),picture-in-picture=(),screen-wake-lock=(),serial=(),speaker-selection=(),storage-access=(),usb=(),web-share=(),xr-spatial-tracking=() permissions-policy: publickey-credentials-create=(self),publickey-credentials-get=(self),accelerometer=(),ambient-light-sensor=(),autoplay=(),battery=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),execution-while-not-rendered=(),execution-while-out-of-viewport=(),fullscreen=(),gamepad=(),geolocation=(),gyroscope=(),hid=(),identity-credentials-get=(),idle-detection=(),local-fonts=(),magnetometer=(),microphone=(),midi=(),otp-credentials=(),payment=(),picture-in-picture=(),screen-wake-lock=(),serial=(),speaker-selection=(),storage-access=(),usb=(),web-share=(),xr-spatial-tracking=() < content-length: 181906 content-length: 181906 < * Connection #0 to host pypi.org left intact ``` ```console (paste your output after the line with the curl command) $ curl -vvv -I --ipv4 https://files.pythonhosted.org/packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz * Trying 199.232.96.223:443... * Connected to files.pythonhosted.org (199.232.96.223) port 443 (#0) * ALPN: offers h2,http/1.1 * TLSv1.3 (OUT), TLS handshake, Client hello (1): * CAfile: /etc/ssl/certs/ca-certificates.crt * CApath: /etc/ssl/certs * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 * ALPN: server accepted h2 * Server certificate: * subject: CN=*.pythonhosted.org * start date: Apr 3 20:57:54 2024 GMT * expire date: May 5 20:57:53 2025 GMT * subjectAltName: host "files.pythonhosted.org" matched cert's "*.pythonhosted.org" * issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Atlas R3 DV TLS CA 2024 Q1 * SSL certificate verify ok. * using HTTP/2 * h2h3 [:method: HEAD] * h2h3 [:path: /packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz] * h2h3 [:scheme: https] * h2h3 [:authority: files.pythonhosted.org] * h2h3 [user-agent: curl/7.88.1] * h2h3 [accept: */*] * Using Stream ID: 1 (easy handle 0x5632d1981c80) > HEAD /packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz HTTP/2 > Host: files.pythonhosted.org > user-agent: curl/7.88.1 > accept: */* > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): < HTTP/2 200 HTTP/2 200 < server: nginx server: nginx < content-type: binary/octet-stream content-type: binary/octet-stream < last-modified: Tue, 11 Apr 2023 02:19:03 GMT last-modified: Tue, 11 Apr 2023 02:19:03 GMT < etag: "83a177756e2c801d0b3a6f7b0d4f3f7e" etag: "83a177756e2c801d0b3a6f7b0d4f3f7e" < x-amz-meta-btime: 2020-02-26T17:47:37.438Z x-amz-meta-btime: 2020-02-26T17:47:37.438Z < x-amz-meta-mtime: 1582739257.438 x-amz-meta-mtime: 1582739257.438 < x-amz-request-id: a413c0617b6ead39 x-amz-request-id: a413c0617b6ead39 < x-amz-id-2: aN8Jj8zH6NqBmnjGUMMJk1Wb3Y/QwGDiw x-amz-id-2: aN8Jj8zH6NqBmnjGUMMJk1Wb3Y/QwGDiw < x-amz-version-id: 4_z179c51e67f11a0ad8f6c0018_f1191cd4ff993bd3d_d20230411_m021903_c005_v0501003_t0041_u01681179543316 x-amz-version-id: 4_z179c51e67f11a0ad8f6c0018_f1191cd4ff993bd3d_d20230411_m021903_c005_v0501003_t0041_u01681179543316 < cache-control: max-age=365000000, immutable, public cache-control: max-age=365000000, immutable, public < accept-ranges: bytes accept-ranges: bytes < date: Fri, 05 Apr 2024 07:44:31 GMT date: Fri, 05 Apr 2024 07:44:31 GMT < age: 150312 age: 150312 < x-served-by: cache-iad-kcgs7200149-IAD, cache-lck10927-LCK x-served-by: cache-iad-kcgs7200149-IAD, cache-lck10927-LCK < x-cache: HIT, HIT x-cache: HIT, HIT < x-cache-hits: 38, 1 x-cache-hits: 38, 1 < x-timer: S1712303072.515534,VS0,VE18 x-timer: S1712303072.515534,VS0,VE18 < strict-transport-security: max-age=31536000; includeSubDomains; preload strict-transport-security: max-age=31536000; includeSubDomains; preload < x-frame-options: deny x-frame-options: deny < x-xss-protection: 1; mode=block x-xss-protection: 1; mode=block < x-content-type-options: nosniff x-content-type-options: nosniff < x-permitted-cross-domain-policies: none x-permitted-cross-domain-policies: none < x-robots-header: noindex x-robots-header: noindex < x-pypi-file-python-version: source x-pypi-file-python-version: source < x-pypi-file-version: 10.0.1 x-pypi-file-version: 10.0.1 < x-pypi-file-package-type: sdist x-pypi-file-package-type: sdist < x-pypi-file-project: pip x-pypi-file-project: pip < content-length: 1246072 content-length: 1246072 < * Connection #0 to host files.pythonhosted.org left intact ```

HTTPS Requests / IPv6 (If available)

No response

TLS Debug / IPv4

#### Good ```console (paste your output after the line with the openssl command) $ curl -vvv -I --ipv6 https://files.pythonhosted.org/packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz * Trying 2a04:4e42:1f::223... * TCP_NODELAY set * Immediate connect fail for 2a04:4e42:1f::223: No route to host * Closing connection 0 curl: (7) Couldn't connect to server 0x2b3bfa0@iMac Downloads % echo -n | openssl s_client -4 -connect pypi.org:443 Connecting to 151.101.128.223 CONNECTED(00000005) depth=2 OU=GlobalSign Root CA - R3, O=GlobalSign, CN=GlobalSign verify return:1 depth=1 C=BE, O=GlobalSign nv-sa, CN=GlobalSign Atlas R3 DV TLS CA 2023 Q2 verify return:1 depth=0 CN=pypi.org verify return:1 --- Certificate chain 0 s:CN=pypi.org i:C=BE, O=GlobalSign nv-sa, CN=GlobalSign Atlas R3 DV TLS CA 2023 Q2 a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Apr 29 19:53:38 2023 GMT; NotAfter: May 30 19:53:37 2024 GMT 1 s:C=BE, O=GlobalSign nv-sa, CN=GlobalSign Atlas R3 DV TLS CA 2023 Q2 i:OU=GlobalSign Root CA - R3, O=GlobalSign, CN=GlobalSign a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Jan 18 03:36:52 2023 GMT; NotAfter: Jan 18 00:00:00 2025 GMT --- Server certificate -----BEGIN CERTIFICATE----- MIIGfzCCBWegAwIBAgIQATphpUBWfreAY2OTrbDywTANBgkqhkiG9w0BAQsFADBY MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEuMCwGA1UE AxMlR2xvYmFsU2lnbiBBdGxhcyBSMyBEViBUTFMgQ0EgMjAyMyBRMjAeFw0yMzA0 MjkxOTUzMzhaFw0yNDA1MzAxOTUzMzdaMBMxETAPBgNVBAMMCHB5cGkub3JnMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsVzK0dZ2ALTL74lfSb8xvcqO eEP1opP9RNEQXhsEAs5sI8hYBP/j8IJO4cBZN/585CTJ8SAMxXon7IC0FvXnhefc bE0kyHQf1cchLuqi2cArNUCZd7kIwYCpIpDvYLTlcJP1ClwwlUdDfobcMMLlot14 NBY11KT1iuNdujm83xF4LvHZu1dNTNMkU0Qnzl26tVKzewC29nEELWwz0Navusc/ 5RVUI8bWrY2ZEJyeJvbs6aHcNbPdhfb8JP8pzheLNDL0VjWnxJnIDWttprck5FJM lueKFjrx4vGB8kWfFpLkOSoq4/VW75FvR78Zx2Bj8BroMnbUiQ/NLhlBFHCscQID AQABo4IDiDCCA4QwPgYDVR0RBDcwNYIIcHlwaS5vcmeCCioucHlwaS5vcmeCDHd3 dy5weXBpLm9yZ4IPZG9uYXRlLnB5cGkub3JnMA4GA1UdDwEB/wQEAwIFoDAdBgNV HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFH5KpEjjaz1tMuya qyjnyKenhRycMFcGA1UdIARQME4wCAYGZ4EMAQIBMEIGCisGAQQBoDIKAQMwNDAy BggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9y eS8wDAYDVR0TAQH/BAIwADCBngYIKwYBBQUHAQEEgZEwgY4wQAYIKwYBBQUHMAGG NGh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2NhL2dzYXRsYXNyM2R2dGxzY2Ey MDIzcTIwSgYIKwYBBQUHMAKGPmh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20v Y2FjZXJ0L2dzYXRsYXNyM2R2dGxzY2EyMDIzcTIuY3J0MB8GA1UdIwQYMBaAFMai YRNFFcyQj7rBrLzMOw0O0N4GMEgGA1UdHwRBMD8wPaA7oDmGN2h0dHA6Ly9jcmwu Z2xvYmFsc2lnbi5jb20vY2EvZ3NhdGxhc3IzZHZ0bHNjYTIwMjNxMi5jcmwwggF/ BgorBgEEAdZ5AgQCBIIBbwSCAWsBaQB2AHb/iD8KtvuVUcJhzPWHujS0pM27Kdxo Qgqf5mdMWjp0AAABh86UAM4AAAQDAEcwRQIhAMEeNv9F3vkrUFb8UDUnBgcJ2ed2 u0Y2h4qXuv4SyBcCAiAdoR3AfpZboQtcbZ4F5kfLAIaEZ48avbJTJGrTg0Z0dwB2 ADtTd3U+LbmAToswWwb+QDtn2E/D9Me9AA0tcm/h+tQXAAABh86UAXkAAAQDAEcw RQIhAL+PCGdwFgr/6mjPltxIkO2pSZ6eDY2sv8n+cW5hXCmzAiAL3XKCZqwJGJXE kvt1ZJkMoqLzAy5CM2ANzSIXQni6wgB3AHPZnokbTJZ4oCB9R53mssYc0FFecRkq jGuAEHrBd3K1AAABh86UAcgAAAQDAEgwRgIhALbbX2nIHt3iNRL+nMyqN0CUwxDz BaSjdQhfBDPciwKbAiEAov0IJaslITt1Mxtyh4Ped9ZOkST5A0K0/Fdbk64zI+sw DQYJKoZIhvcNAQELBQADggEBAGodVH7XXcayedVPuAMF5agiOBVJp7evMWz2R8xK ON0jovv1oItNrXvt3tVWvPUl4Dm/AIbCrAHw/d1cz1loot8Nv2tRI8vRpBZ6bnnQ wWKVlJmz3BRr42wV5HMiLjk0cUFgL+BDcoqpcEKUXsuNgTaevvLkx38Oo8b4Y9PT CBkcuiqBfqViBAHB9mUcJCtpXW5waX+DwvbkkTULNTdYq5CZLENSPa2H22r/V0SI gu08iGpOOdMJaaFBQp35ECW+UTdYSa+9tMx+B3GzpgxXVcW/P/ZCKcThequGVDbr 7hy8HRcXVP/+ejef0co8/E9MR5/EYrICq5M7JWJunSDgFP8= -----END CERTIFICATE----- subject=CN=pypi.org issuer=C=BE, O=GlobalSign nv-sa, CN=GlobalSign Atlas R3 DV TLS CA 2023 Q2 --- No client certificate CA names sent Peer signing digest: SHA256 Peer signature type: RSA-PSS Server Temp Key: X25519, 253 bits --- SSL handshake has read 3387 bytes and written 380 bytes Verification: OK --- New, TLSv1.3, Cipher is TLS_AES_128_GCM_SHA256 Server public key is 2048 bit This TLS version forbids renegotiation. Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent Verify return code: 0 (ok) --- --- Post-Handshake New Session Ticket arrived: SSL-Session: Protocol : TLSv1.3 Cipher : TLS_AES_128_GCM_SHA256 Session-ID: D3719AFD5342956F16EC32DCD9B6C6C9DF0B7BA9CAD7780B03CF5B9FDA1E5882 Session-ID-ctx: Resumption PSK: FF659FA7ED6468C4CB1C279AAEC07FD773B88088007E33CD9D8FDB792D76DC0F PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 3600 (seconds) TLS session ticket: 0000 - 38 0c 5d bf 25 b7 45 37-40 b4 35 06 77 75 ce ff 8.].%.E7@.5.wu.. 0010 - f6 20 1f 05 45 c6 98 e1-8e ec 54 67 20 48 d3 b8 . ..E.....Tg H.. 0020 - 2f 5c 03 be e2 a8 c2 91-1d f6 13 50 c0 1d 8e 33 /\.........P...3 0030 - 85 0a 81 fb a3 b0 d2 37-60 1a 28 0a c4 ee 9c 00 .......7`.(..... 0040 - 06 8f 68 4c 65 ab ff 86-3f 8f c0 6d 22 04 fc d8 ..hLe...?..m"... 0050 - 39 5f 03 bb fb 67 75 5b-74 76 54 02 ff de 14 c5 9_...gu[tvT..... 0060 - 24 63 61 98 fb 4a 12 d8-40 1e 89 64 4f e0 0e 67 $ca..J..@..dO..g 0070 - 9f 98 8d ef fa a6 d3 5b-1e 20 c8 14 62 f1 cf 5b .......[. ..b..[ 0080 - db ad 69 7c 82 80 e5 db-55 29 3b 65 b0 11 28 19 ..i|....U);e..(. 0090 - 19 3c c3 9d 89 aa 50 46-56 33 52 22 07 65 4b 96 .<....PFV3R".eK. Start Time: 1712302810 Timeout : 7200 (sec) Verify return code: 0 (ok) Extended master secret: no Max Early Data: 0 --- read R BLOCK DONE ``` ```console (paste your output after the line with the openssl command) $ echo -n | openssl s_client -4 -connect files.pythonhosted.org:443 Connecting to 151.101.132.223 CONNECTED(00000003) depth=2 OU=GlobalSign Root CA - R3, O=GlobalSign, CN=GlobalSign verify return:1 depth=1 C=BE, O=GlobalSign nv-sa, CN=GlobalSign Atlas R3 DV TLS CA 2024 Q1 verify return:1 depth=0 CN=*.pythonhosted.org verify return:1 --- Certificate chain 0 s:CN=*.pythonhosted.org i:C=BE, O=GlobalSign nv-sa, CN=GlobalSign Atlas R3 DV TLS CA 2024 Q1 a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Apr 3 20:57:54 2024 GMT; NotAfter: May 5 20:57:53 2025 GMT 1 s:C=BE, O=GlobalSign nv-sa, CN=GlobalSign Atlas R3 DV TLS CA 2024 Q1 i:OU=GlobalSign Root CA - R3, O=GlobalSign, CN=GlobalSign a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Oct 18 04:09:32 2023 GMT; NotAfter: Oct 18 00:00:00 2025 GMT --- Server certificate -----BEGIN CERTIFICATE----- MIIGZzCCBU+gAwIBAgIQAcOrKrs8XLejwWcj1jktoTANBgkqhkiG9w0BAQsFADBY MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEuMCwGA1UE AxMlR2xvYmFsU2lnbiBBdGxhcyBSMyBEViBUTFMgQ0EgMjAyNCBRMTAeFw0yNDA0 MDMyMDU3NTRaFw0yNTA1MDUyMDU3NTNaMB0xGzAZBgNVBAMMEioucHl0aG9uaG9z dGVkLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANEZEoyO7Bmf Tw2r3SB5ST4GOSXXIId1W+aj2xvhF94cSM4fRiUAcANq7aQPSBO1vnLY+Be5ZIw6 pWToDqEOAmkvP0znzAHPttWFaKmkTODIyJPVCc/HLbZITDh62zRDr4wELOxTyjow lLT4+YeKab8NH3sPfsmW0umvJDWWOnau/ZYkDANQ6l6S+EgPcqobFWmvaWZWB34T ey7+B+Wp4NPhqMKCeW7fxuecJMwTEe3AxSXvpOwm5gKZoHFx5RZLTmg+dSXEyKz/ s14GmCyfCmxO+1lkvu7gQ3zChhOfvNGTEO87AA6xEnDecame18cuY3RJ4W8Q4myu /Y0OuQNIvLsCAwEAAaOCA2YwggNiMB0GA1UdEQQWMBSCEioucHl0aG9uaG9zdGVk Lm9yZzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF BwMCMB0GA1UdDgQWBBSXwXXERc3WFlGxClfXO8dzRFljlDBXBgNVHSAEUDBOMAgG BmeBDAECATBCBgorBgEEAaAyCgEDMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3 Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMAwGA1UdEwEB/wQCMAAwgZ4GCCsG AQUFBwEBBIGRMIGOMEAGCCsGAQUFBzABhjRodHRwOi8vb2NzcC5nbG9iYWxzaWdu LmNvbS9jYS9nc2F0bGFzcjNkdnRsc2NhMjAyNHExMEoGCCsGAQUFBzAChj5odHRw Oi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc2F0bGFzcjNkdnRsc2Nh MjAyNHExLmNydDAfBgNVHSMEGDAWgBRmwMejms3+8+rOS1MLYV6vMwWz4TBIBgNV HR8EQTA/MD2gO6A5hjdodHRwOi8vY3JsLmdsb2JhbHNpZ24uY29tL2NhL2dzYXRs YXNyM2R2dGxzY2EyMDI0cTEuY3JsMIIBfgYKKwYBBAHWeQIEAgSCAW4EggFqAWgA dgDPEVbu1S58r/OHW9lpLpvpGnFnSrAX7KwB0lt3zsw7CAAAAY6lwQeuAAAEAwBH MEUCIQCeUpAhKlzltGBOWe6ijCP5X48AzgYWSHEeOIS9+wGseQIgO8tclzJ/PzUr 8K5TqDYW0OQes1GBCAyZF1yGW4kNAmMAdwB9WR4S4XgqexxhZ3xe/fjQh1wUoE6V nrkDL9kOjC55uAAAAY6lwQkTAAAEAwBIMEYCIQCldmldu3h+YzcB53oY7XzUcYZG +gm88ZlPKIMUGtcOHQIhAI2XeVkP4A+Rg9wcZjLVRBJ5TnDPFEeK1iOx6q2zyC2R AHUAouMK5EXvva2bfjjtR2d3U9eCW4SU1yteGyzEuVCkR+cAAAGOpcEJjQAABAMA RjBEAiBWV9bTxVz/Dn9FvjFwlm0jOrHCUri252irXoouRe7qigIgarkZhGb4Wyn1 nBYhJ+zUreWHeJnuY9xmeF32mpvF5/swDQYJKoZIhvcNAQELBQADggEBAFMPL6YJ W9Ko/vvzpukuHBhqyLs7vCxi6iizmxwYIA00iwcUtizxhMv64656wgzhsG8Q8h6x /vGm0WQwmgbRnJWBbH4lI6iR0ILwRT4cEm2VM2EdYh+RdsJrvyFUsIFVU8JydzsL j29YeaT1KESQntBY0qxpj5kliF2KH3mIWINBfGzx5EZP/Plh4yGJzUSwPkLDLeyQ UeaFKaF8gMaJoYcxR/CvZMdM02wNtBs9rkBJPb1GJxHT1ILZ6bQgN2TYpG+rk/Ne DHV09zWmv3Wiw5afDs4jTxDMYF0R2GZVa3RYdrQ0JRMgKFxgP4WinvoiQUayL9Vh lY4iXpSm8k7pUEA= -----END CERTIFICATE----- subject=CN=*.pythonhosted.org issuer=C=BE, O=GlobalSign nv-sa, CN=GlobalSign Atlas R3 DV TLS CA 2024 Q1 --- No client certificate CA names sent Peer signing digest: SHA256 Peer signature type: RSA-PSS Server Temp Key: X25519, 253 bits --- SSL handshake has read 3363 bytes and written 394 bytes Verification: OK --- New, TLSv1.3, Cipher is TLS_AES_128_GCM_SHA256 Server public key is 2048 bit This TLS version forbids renegotiation. Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent Verify return code: 0 (ok) --- --- Post-Handshake New Session Ticket arrived: SSL-Session: Protocol : TLSv1.3 Cipher : TLS_AES_128_GCM_SHA256 Session-ID: C8DA4EDD803177AEE4ACA3B17BE9640ACC4A20CA50CE7CB15B471F3FCEA09898 Session-ID-ctx: Resumption PSK: F8DD98068DA78D62505FD009C89EEE949C510C24A22082EB6E28EB80A09D05D5 PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 3600 (seconds) TLS session ticket: 0000 - 38 0c 5d bf 25 b7 45 37-40 b4 35 06 77 75 ce ff 8.].%.E7@.5.wu.. 0010 - 76 b4 4a a3 74 54 6a 1d-42 a1 49 e5 ac bc 35 93 v.J.tTj.B.I...5. 0020 - c8 17 96 dc aa 7f 2a 04-4e 0f 75 3d 94 fd 45 43 ......*.N.u=..EC 0030 - a9 da fd 14 10 cd 0f a4-3f 48 d9 55 a4 8c 8b 17 ........?H.U.... 0040 - a1 f9 8a a2 9d 67 bd 19-62 62 ac d3 4d b7 c0 63 .....g..bb..M..c 0050 - c1 a0 b6 c8 cd 69 18 1b-e0 93 5f 1e b6 7e e4 3b .....i...._..~.; 0060 - 44 70 be a4 b6 cb e7 97-b1 38 d5 21 b2 12 6a e1 Dp.......8.!..j. 0070 - 77 4c f1 9f 9d ee e6 23-33 8f 2c 35 36 31 ee 35 wL.....#3.,561.5 0080 - 91 55 27 11 ec 58 f2 18-d6 b7 21 d3 e3 bb 97 e0 .U'..X....!..... 0090 - 3e c0 53 96 c0 08 85 d9-3f c1 cb fe 7d a3 2b 4a >.S.....?...}.+J Start Time: 1712302828 Timeout : 7200 (sec) Verify return code: 0 (ok) Extended master secret: no Max Early Data: 0 --- read R BLOCK DONE ``` #### Bad ```console (paste your output after the line with the openssl command) $ curl -vvv -I --ipv6 https://files.pythonhosted.org/packages/ae/e8/2340d46ecadb1692a1e455f13f75e596d4eab3d11a57446f08259dee8f02/pip-10.0.1.tar.gz CONNECTED(00000003) depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign verify return:1 depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2023 Q2 verify return:1 depth=0 CN = pypi.org verify return:1 --- Certificate chain 0 s:CN = pypi.org i:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2023 Q2 a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Apr 29 19:53:38 2023 GMT; NotAfter: May 30 19:53:37 2024 GMT 1 s:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2023 Q2 i:OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Jan 18 03:36:52 2023 GMT; NotAfter: Jan 18 00:00:00 2025 GMT --- Server certificate -----BEGIN CERTIFICATE----- MIIGfzCCBWegAwIBAgIQATphpUBWfreAY2OTrbDywTANBgkqhkiG9w0BAQsFADBY MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEuMCwGA1UE AxMlR2xvYmFsU2lnbiBBdGxhcyBSMyBEViBUTFMgQ0EgMjAyMyBRMjAeFw0yMzA0 MjkxOTUzMzhaFw0yNDA1MzAxOTUzMzdaMBMxETAPBgNVBAMMCHB5cGkub3JnMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsVzK0dZ2ALTL74lfSb8xvcqO eEP1opP9RNEQXhsEAs5sI8hYBP/j8IJO4cBZN/585CTJ8SAMxXon7IC0FvXnhefc bE0kyHQf1cchLuqi2cArNUCZd7kIwYCpIpDvYLTlcJP1ClwwlUdDfobcMMLlot14 NBY11KT1iuNdujm83xF4LvHZu1dNTNMkU0Qnzl26tVKzewC29nEELWwz0Navusc/ 5RVUI8bWrY2ZEJyeJvbs6aHcNbPdhfb8JP8pzheLNDL0VjWnxJnIDWttprck5FJM lueKFjrx4vGB8kWfFpLkOSoq4/VW75FvR78Zx2Bj8BroMnbUiQ/NLhlBFHCscQID AQABo4IDiDCCA4QwPgYDVR0RBDcwNYIIcHlwaS5vcmeCCioucHlwaS5vcmeCDHd3 dy5weXBpLm9yZ4IPZG9uYXRlLnB5cGkub3JnMA4GA1UdDwEB/wQEAwIFoDAdBgNV HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFH5KpEjjaz1tMuya qyjnyKenhRycMFcGA1UdIARQME4wCAYGZ4EMAQIBMEIGCisGAQQBoDIKAQMwNDAy BggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9y eS8wDAYDVR0TAQH/BAIwADCBngYIKwYBBQUHAQEEgZEwgY4wQAYIKwYBBQUHMAGG NGh0dHA6Ly9vY3NwLmdsb2JhbHNpZ24uY29tL2NhL2dzYXRsYXNyM2R2dGxzY2Ey MDIzcTIwSgYIKwYBBQUHMAKGPmh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20v Y2FjZXJ0L2dzYXRsYXNyM2R2dGxzY2EyMDIzcTIuY3J0MB8GA1UdIwQYMBaAFMai YRNFFcyQj7rBrLzMOw0O0N4GMEgGA1UdHwRBMD8wPaA7oDmGN2h0dHA6Ly9jcmwu Z2xvYmFsc2lnbi5jb20vY2EvZ3NhdGxhc3IzZHZ0bHNjYTIwMjNxMi5jcmwwggF/ BgorBgEEAdZ5AgQCBIIBbwSCAWsBaQB2AHb/iD8KtvuVUcJhzPWHujS0pM27Kdxo Qgqf5mdMWjp0AAABh86UAM4AAAQDAEcwRQIhAMEeNv9F3vkrUFb8UDUnBgcJ2ed2 u0Y2h4qXuv4SyBcCAiAdoR3AfpZboQtcbZ4F5kfLAIaEZ48avbJTJGrTg0Z0dwB2 ADtTd3U+LbmAToswWwb+QDtn2E/D9Me9AA0tcm/h+tQXAAABh86UAXkAAAQDAEcw RQIhAL+PCGdwFgr/6mjPltxIkO2pSZ6eDY2sv8n+cW5hXCmzAiAL3XKCZqwJGJXE kvt1ZJkMoqLzAy5CM2ANzSIXQni6wgB3AHPZnokbTJZ4oCB9R53mssYc0FFecRkq jGuAEHrBd3K1AAABh86UAcgAAAQDAEgwRgIhALbbX2nIHt3iNRL+nMyqN0CUwxDz BaSjdQhfBDPciwKbAiEAov0IJaslITt1Mxtyh4Ped9ZOkST5A0K0/Fdbk64zI+sw DQYJKoZIhvcNAQELBQADggEBAGodVH7XXcayedVPuAMF5agiOBVJp7evMWz2R8xK ON0jovv1oItNrXvt3tVWvPUl4Dm/AIbCrAHw/d1cz1loot8Nv2tRI8vRpBZ6bnnQ wWKVlJmz3BRr42wV5HMiLjk0cUFgL+BDcoqpcEKUXsuNgTaevvLkx38Oo8b4Y9PT CBkcuiqBfqViBAHB9mUcJCtpXW5waX+DwvbkkTULNTdYq5CZLENSPa2H22r/V0SI gu08iGpOOdMJaaFBQp35ECW+UTdYSa+9tMx+B3GzpgxXVcW/P/ZCKcThequGVDbr 7hy8HRcXVP/+ejef0co8/E9MR5/EYrICq5M7JWJunSDgFP8= -----END CERTIFICATE----- subject=CN = pypi.org issuer=C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2023 Q2 --- No client certificate CA names sent Peer signing digest: SHA256 Peer signature type: RSA-PSS Server Temp Key: X25519, 253 bits --- SSL handshake has read 3387 bytes and written 378 bytes Verification: OK --- New, TLSv1.3, Cipher is TLS_AES_128_GCM_SHA256 Server public key is 2048 bit Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent Verify return code: 0 (ok) --- --- Post-Handshake New Session Ticket arrived: SSL-Session: Protocol : TLSv1.3 Cipher : TLS_AES_128_GCM_SHA256 Session-ID: C2B1ADFAC6DC162DABC3FA25432799E16052D7AD07CBB774CC2118F8E0AA3EB2 Session-ID-ctx: Resumption PSK: 2BCB5C9C77FC98C278604C806FCA9A095F8B99754CB19FE5B4F4B340331D90CE PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 3600 (seconds) TLS session ticket: 0000 - 38 0c 5d bf 25 b7 45 37-40 b4 35 06 77 75 ce ff 8.].%.E7@.5.wu.. 0010 - 80 a8 7b e6 2f 8d 95 6f-b5 fd 81 a9 6c eb 2f 82 ..{./..o....l./. 0020 - 6f 65 83 41 3a 31 a2 b1-63 93 f8 3f 40 fc 3f bb oe.A:1..c..?@.?. 0030 - 20 48 c3 9a 36 5c f4 7b-ba c4 02 e4 4d f7 1a fb H..6\.{....M... 0040 - fb a8 22 4d 43 c7 2f 55-c7 80 7a df c3 97 6e d8 .."MC./U..z...n. 0050 - fb ce dd 56 c3 2c 1c 1c-ca 16 73 89 75 58 29 6d ...V.,....s.uX)m 0060 - d8 d3 3d 8e 1d 26 da 5a-23 cc 67 3e ab b5 3c 24 ..=..&.Z#.g>..<$ 0070 - 3d 67 c9 03 06 31 19 cb-45 6b f4 08 72 aa fe b3 =g...1..Ek..r... 0080 - 67 6f ae e8 ce 9b 3d f0-2b ca e8 01 0d 98 96 9f go....=.+....... 0090 - 51 65 65 6c ae e1 44 8c-e5 00 7a 6f 19 59 2a b5 Qeel..D...zo.Y*. Start Time: 1712302848 Timeout : 7200 (sec) Verify return code: 0 (ok) Extended master secret: no Max Early Data: 0 --- read R BLOCK DONE ``` ```console (paste your output after the line with the openssl command) $ echo -n | openssl s_client -4 -connect files.pythonhosted.org:443 CONNECTED(00000003) depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign verify return:1 depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2024 Q1 verify return:1 depth=0 CN = *.pythonhosted.org verify return:1 --- Certificate chain 0 s:CN = *.pythonhosted.org i:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2024 Q1 a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Apr 3 20:57:54 2024 GMT; NotAfter: May 5 20:57:53 2025 GMT 1 s:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2024 Q1 i:OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: Oct 18 04:09:32 2023 GMT; NotAfter: Oct 18 00:00:00 2025 GMT --- Server certificate -----BEGIN CERTIFICATE----- MIIGZzCCBU+gAwIBAgIQAcOrKrs8XLejwWcj1jktoTANBgkqhkiG9w0BAQsFADBY MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEuMCwGA1UE AxMlR2xvYmFsU2lnbiBBdGxhcyBSMyBEViBUTFMgQ0EgMjAyNCBRMTAeFw0yNDA0 MDMyMDU3NTRaFw0yNTA1MDUyMDU3NTNaMB0xGzAZBgNVBAMMEioucHl0aG9uaG9z dGVkLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANEZEoyO7Bmf Tw2r3SB5ST4GOSXXIId1W+aj2xvhF94cSM4fRiUAcANq7aQPSBO1vnLY+Be5ZIw6 pWToDqEOAmkvP0znzAHPttWFaKmkTODIyJPVCc/HLbZITDh62zRDr4wELOxTyjow lLT4+YeKab8NH3sPfsmW0umvJDWWOnau/ZYkDANQ6l6S+EgPcqobFWmvaWZWB34T ey7+B+Wp4NPhqMKCeW7fxuecJMwTEe3AxSXvpOwm5gKZoHFx5RZLTmg+dSXEyKz/ s14GmCyfCmxO+1lkvu7gQ3zChhOfvNGTEO87AA6xEnDecame18cuY3RJ4W8Q4myu /Y0OuQNIvLsCAwEAAaOCA2YwggNiMB0GA1UdEQQWMBSCEioucHl0aG9uaG9zdGVk Lm9yZzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF BwMCMB0GA1UdDgQWBBSXwXXERc3WFlGxClfXO8dzRFljlDBXBgNVHSAEUDBOMAgG BmeBDAECATBCBgorBgEEAaAyCgEDMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3 Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMAwGA1UdEwEB/wQCMAAwgZ4GCCsG AQUFBwEBBIGRMIGOMEAGCCsGAQUFBzABhjRodHRwOi8vb2NzcC5nbG9iYWxzaWdu LmNvbS9jYS9nc2F0bGFzcjNkdnRsc2NhMjAyNHExMEoGCCsGAQUFBzAChj5odHRw Oi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9nc2F0bGFzcjNkdnRsc2Nh MjAyNHExLmNydDAfBgNVHSMEGDAWgBRmwMejms3+8+rOS1MLYV6vMwWz4TBIBgNV HR8EQTA/MD2gO6A5hjdodHRwOi8vY3JsLmdsb2JhbHNpZ24uY29tL2NhL2dzYXRs YXNyM2R2dGxzY2EyMDI0cTEuY3JsMIIBfgYKKwYBBAHWeQIEAgSCAW4EggFqAWgA dgDPEVbu1S58r/OHW9lpLpvpGnFnSrAX7KwB0lt3zsw7CAAAAY6lwQeuAAAEAwBH MEUCIQCeUpAhKlzltGBOWe6ijCP5X48AzgYWSHEeOIS9+wGseQIgO8tclzJ/PzUr 8K5TqDYW0OQes1GBCAyZF1yGW4kNAmMAdwB9WR4S4XgqexxhZ3xe/fjQh1wUoE6V nrkDL9kOjC55uAAAAY6lwQkTAAAEAwBIMEYCIQCldmldu3h+YzcB53oY7XzUcYZG +gm88ZlPKIMUGtcOHQIhAI2XeVkP4A+Rg9wcZjLVRBJ5TnDPFEeK1iOx6q2zyC2R AHUAouMK5EXvva2bfjjtR2d3U9eCW4SU1yteGyzEuVCkR+cAAAGOpcEJjQAABAMA RjBEAiBWV9bTxVz/Dn9FvjFwlm0jOrHCUri252irXoouRe7qigIgarkZhGb4Wyn1 nBYhJ+zUreWHeJnuY9xmeF32mpvF5/swDQYJKoZIhvcNAQELBQADggEBAFMPL6YJ W9Ko/vvzpukuHBhqyLs7vCxi6iizmxwYIA00iwcUtizxhMv64656wgzhsG8Q8h6x /vGm0WQwmgbRnJWBbH4lI6iR0ILwRT4cEm2VM2EdYh+RdsJrvyFUsIFVU8JydzsL j29YeaT1KESQntBY0qxpj5kliF2KH3mIWINBfGzx5EZP/Plh4yGJzUSwPkLDLeyQ UeaFKaF8gMaJoYcxR/CvZMdM02wNtBs9rkBJPb1GJxHT1ILZ6bQgN2TYpG+rk/Ne DHV09zWmv3Wiw5afDs4jTxDMYF0R2GZVa3RYdrQ0JRMgKFxgP4WinvoiQUayL9Vh lY4iXpSm8k7pUEA= -----END CERTIFICATE----- subject=CN = *.pythonhosted.org issuer=C = BE, O = GlobalSign nv-sa, CN = GlobalSign Atlas R3 DV TLS CA 2024 Q1 --- No client certificate CA names sent Peer signing digest: SHA256 Peer signature type: RSA-PSS Server Temp Key: X25519, 253 bits --- SSL handshake has read 3363 bytes and written 392 bytes Verification: OK --- New, TLSv1.3, Cipher is TLS_AES_128_GCM_SHA256 Server public key is 2048 bit Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent Verify return code: 0 (ok) --- --- Post-Handshake New Session Ticket arrived: SSL-Session: Protocol : TLSv1.3 Cipher : TLS_AES_128_GCM_SHA256 Session-ID: EB34CAF86FA136FCE02729534D5D145C2921C427966E437A1150EC6E2F178716 Session-ID-ctx: Resumption PSK: 0D9CD96C7EEE767E510B3AE72AF8DAD030BCD0FF89478FE96FA621625AD58A25 PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 3600 (seconds) TLS session ticket: 0000 - 38 0c 5d bf 25 b7 45 37-40 b4 35 06 77 75 ce ff 8.].%.E7@.5.wu.. 0010 - 1c 86 24 48 09 ec 83 ed-d5 48 8d 8e 9b 56 5c 9a ..$H.....H...V\. 0020 - df dc d4 c7 f6 b9 d5 be-ac 35 cf 14 9e d4 a0 f2 .........5...... 0030 - 94 0a 12 94 d8 85 7d f5-23 a9 cd b4 56 5b 06 48 ......}.#...V[.H 0040 - bd e2 59 48 e8 c0 7a 58-9f 9d 18 82 9a a1 63 33 ..YH..zX......c3 0050 - af a6 79 ef 16 96 93 32-70 76 dc ea 2b 20 32 73 ..y....2pv..+ 2s 0060 - f8 64 62 64 53 a3 9c 2e-6f d8 7d be 2d 5f 3b c7 .dbdS...o.}.-_;. 0070 - 03 04 49 3f 1b 14 42 bb-6c 9a ab 93 1f 2a 8d 88 ..I?..B.l....*.. 0080 - 50 5d 34 a6 b1 ee 8d 12-5b 05 4d b5 db 6f b8 cc P]4.....[.M..o.. 0090 - cb 68 b1 59 b8 d4 8a 17-c5 11 a5 a7 d1 8d 2e 1d .h.Y............ Start Time: 1712302905 Timeout : 7200 (sec) Verify return code: 0 (ok) Extended master secret: no Max Early Data: 0 --- read R BLOCK DONE ```

TLS Debug / IPv6 (If available)

No response

Code of Conduct

0x2b3bfa0 commented 4 months ago

As a workaround, we've deployed hauntsaninja/nginx_pypi_cache[^1] to cache packages locally.

[^1]: Listed at https://packaging.python.org/en/latest/guides/index-mirrors-and-caches