😎

BoringSSL と HTTP/3 対応の curl をビルドする

2024/04/27に公開

BoringSSL は Google が開発する TLS ライブラリである。Rust で書かれた HTTP/3 ライブラリの quiche と一緒にビルドする。BoringSSL と nghttp2 を実験的にビルドする場合、現時点で特定のコミットのみのサポートとなっている。環境は Chromebook の Linux 開発環境の Debian 12 Bookworm である。

まず Rust の導入は asdf で行った。

asdf plugin add rust
asdf install rust 1.77.2
asdf global rust 1.77.2

$HOME/http3/boringssl をホームディレクトリにした。quiche と BoringSSL のコードを入手する

cd http3/boringssl
git clone --depth 1 --recursive -b 0.20.0 \
https://github.com/cloudflare/quiche

cargo コマンドで BoringSSL および quiche をビルドする

cargo build --package quiche --release --features ffi,pkg-config-meta,qlog

QUICHE_BSSL_PATH 変数にあらかじめビルドした BoringSSL のディレクトリを指定する方法があるが、Debian ではうまくいかなかった。

あとで cURL でビルドしやすいようにライブラリのリンクを生成する。

mkdir quiche/deps/boringssl/src/lib
ln -vnf $(find target/release -name libcrypto.a -o -name libssl.a) \
quiche/deps/boringssl/src/lib/
cd ../

次に curl をビルドする

git clone --depth 1 -b curl-8_7_1 https://github.com/curl/curl
cd curl
autoreconf -fi
./configure LDFLAGS="-Wl,-rpath,$PWD/../quiche/target/release" \
--with-openssl=$PWD/../quiche/quiche/deps/boringssl/src \
--with-quiche=$PWD/../quiche/target/release
make
make install
cd ../

quiche が組み込まれていることを確認する

bin/curl --version

Discussion