When you are all said and done with this tutorial, you'll be able to double check http3 support via the curl command like this:
curl --http3 https://cloudflare-quic.com -I
HTTP/3 200
date: Fri, 24 Jul 2020 08:10:24 GMT
content-type: text/html
content-length: 106072
set-cookie: __cfduid=d8647a359d68a89c060bde4f373e18cc61595578224; expires=Sun, 23-Aug-20 08:10:24 GMT; path=/; domain=.cloudflare-quic.com; HttpOnly; SameSite=Lax; Secure
cf-request-id: 042178a64b0000188b7b1d9200000001
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
cf-ray: 5b7c2a1d4eb5188b-MAN
alt-svc: h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400
Unfortunately, this currently involves building curl from source, luckily for us, cloudflare makes this even easier.
- Note: You must have https://brew.sh/ installed already
# Clean up any old version of curl you may have already tried to install
brew remove -f curl
# Download the curl ruby install script provided by cloudflare
wget https://raw.githubusercontent.com/cloudflare/homebrew-cloudflare/master/curl.rb
# Install curl via that script from the latest git repos
brew install --HEAD -s curl.rb
# Tell your cli to use the curl version just installed (if you're using zsh, othwerise you might need `~/.bashrc`)
echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.zshrc
# Reload your config
source ~/.zshrc
# Double check it's using the right curl
which curl # Should output "/usr/local/opt/curl/bin/curl"
# Double check http3
$ curl --version | grep HTTP3
Features: alt-svc AsynchDNS brotli HTTP2 HTTP3 IDN IPv6 Largefile libz MultiSSL NTLM NTLM_WB SSL UnixSockets zstd
# Try curl on any HTTP/3 enabled sites.
curl --http3 https://blog.cloudflare.com -I
Have fun upgrading all the servers!
Top comments (6)
Is the CloudFlare curl project unmaintained?
The docs (curl HTTP 3 tutorial) have gone away:
There's Homebrew build issue
Errno::ENOENT: No such file or directory - lib/mk-ca-bundle.pl
covered by both:github.com/cloudflare/homebrew-clo...
github.com/cloudflare/homebrew-clo...
You can use the alternate Git repo linked below, or you need only make 1 line changes to curl.rb, per:
github.com/cloudflare/homebrew-clo...
Thanks! It seems as if Cloudflare has made this as simple as possible... unfortunately, though, at the time of writing, there are several issues which need to be fixed in order to run this.
First, the version of Ruby shipped with macOS 11.5 seems to be outdated/broken/missing essential functionality. But it's not a good idea to uninstall Ruby and replace it by something else, of course; so the suggested alternative is to set
HOMEBREW_FORCE_VENDOR_RUBY=1
before running the above commands.It should temporarily install a recent version of Ruby (3.X as opposed to 2.6.X shipping by default with macOS Big Sur) and do whatever it's supposed to do using that version of Ruby.
Unfortunately, my own Homebrew setup seems to be quite broken after way too many experiments, and, as a consequence, I cannot follow these instructions, but that's my fault — not yours (neither Cloudflare's — they're keeping everything up to date).
Getting error
==> ./configure --prefix=/opt/homebrew/Cellar/curl/HEAD-c5d8895 --with-ssl=/private/tmp/curl-20221003-97661-1jujnek/quiche/quiche/deps/boringssl/src -
==> make install
==> make install -C scripts
Error: An exception occurred within a child process:
Errno::ENOENT: No such file or directory - lib/mk-ca-bundle.pl
You can use this one instead if on Mac OS Apple Silicon.
Had to follow this page for one change (adding FFI):
github.com/ctsrc/homebrew-cloudfla...
Btw, if you don't have wget installed, use curl -O.