macOS curl http3 설치

macOS curl http3 설치
$ curl --version
curl 8.8.0 (aarch64-apple-darwin23.4.0) libcurl/8.8.0 (SecureTransport) OpenSSL/3.3.1 zlib/1.2.12 brotli/1.1.0 zstd/1.5.6 libidn2/2.3.7 libssh2/1.11.0 nghttp2/1.61.0 librtmp/2.3 OpenLDAP/2.6.8
Release-Date: 2024-05-22
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz MultiSSL NTLM SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd

맥에서 Homebrew로 설치하는 curl은 기본적으로 HTTP3 피쳐가 없다. 위처럼 --version 옵션으로 확인할 수 있다.

$ curl --http3 https://cloudflare-quic.com -I
curl: option --http3: the installed libcurl version doesn't support this

아니면 http3 옵션을 넣어서 이렇게 확인할 수도 있다

curl http3 버전 설치

cloudflare에서 quiche를 이용해 http3을 지원하는 curl formula를 지원한다 (https://github.com/cloudflare/homebrew-cloudflare/blob/master/curl.rb)

현재 설치된 curl을 제거하고, 위 버전의 curl을 설치하면 된다.

# 기존에 설치된 curl 제거
brew remove -f curl

# cloudflare가 제공하는 curl ruby script 다운로드
wget https://raw.githubusercontent.com/cloudflare/homebrew-cloudflare/master/curl.rb

# curl 설치
brew install --formula --HEAD -s curl.rb

# 설치한 curl PATH에 추가
echo 'export PATH="$(brew --prefix)/opt/curl/bin:$PATH"' >> ~/.zshrc

# 쉘 재시작

# PATH 제대로 수정되었는지 확인
which curl # Apple silicon의 경우, "/opt/homebrew/opt/curl/bin/curl"

# http3 Feature enable 되었는지 확인
curl --version | grep HTTP3
  Features: alt-svc AsynchDNS brotli HTTP2 HTTP3 IDN IPv6 Largefile libz MultiSSL NTLM NTLM_WB SSL UnixSockets zstd

# http3 지원하는 서버에 요청해서 테스트
curl --http3 https://cloudflare-quic.com -I
# 아래처럼 나오는지 확인
HTTP/3 200
date: Sat, 17 Aug 2024 08:09:01 GMT
content-type: text/html
content-length: 125959
server: cloudflare
cf-ray: 8b482dfb4bae29e3-FUK
alt-svc: h3=":443"; ma=86400

참고 링크

Installing curl with http3 on MacOS
Installing curl with http3 on MacOS. GitHub Gist: instantly share code, notes, and snippets.