Introduction
忘備録。
企業内では、自社のイントラネット内の HTTPS 通信を監視するために、SSL インスペクションを導入しているところがある。
Zscaler も SSL インスペクションを提供しており、端末内に Zscalerにより署名されたサーバー証明書をインストールさせ、プロキシサーバーを経由させることで通信内容をチェックすることが可能になる。
が、この仕組みのせいか、SSL を使用した通信が上手くいかないことがある。
前提として、Zscalerにより署名されたサーバー証明書は自動なり手動なりでインストール済みで、外部への接続に問題はない。
遭遇したのが、git clone
や git submodule
によるリポジトリのダウンロード。
1 | git submodule add https://github.com/tensorflow/models models |
このエラーの解決策として
git config --global http.postBuffer 524288000
やgit config --global https.postBuffer 524288000
によってバッファを増やすgit config --global core.compression -1
により zlib での圧縮を有効化
等が提案されているが意味をなさない。
さらに問題をややこしくしているのが、問題が起きるのが Linux 端末のみで、最近遭遇することが増えてきた印象。
Ubuntu のみで遭遇しているが、他のディストリビューションでは試していない。
How to resolve?
遭遇している人は多く、これだと言う解決策がないが、私が試した限り、効果覿面だったのが下記。
docker 環境でもこの問題に遭遇していたため、困り果てていたのだが、本当に感謝。
1 | sudo apt-get install build-essential fakeroot dpkg-dev -y |
git をソースで取得し、ssl を有効にしてから、 dpkg-buildpackage
でビルドしてインストールしている。
dockerfile で使用する場合、 cd git-2.*.*
のようにワイルドカードがダメみたいなので、ここは明示的に指定する必要がある。
下記は Ubuntu のバージョン毎に取得できる git のバージョン。
Ubuntu | git |
---|---|
16.04 | 2.7.4 |
18.04 | 2.17.1 |
20.04 | 2.25.1 |
22.04 | 2.34.1 |
24.04 | 2.43.0 |
下記は Dockerfile の一例。
最初に git もインストールしているが、後半に git をビルドする際に依存パッケージの解決が面倒なのでこうしている。
1 | FROM ubuntu:20.04 |
ただし、Ubuntu 23.10 以降、リポジトリソースの設定に deb822形式 が採用されたため、 sed
で変更する設定の場所と書式が変わってしまったため、24.04 以降の場合は下記になる。
1 | FROM ubuntu:24.04 |