概要
社内教育など、会社が学校から Kaggle API を使いたくなる場面があると思います。ところが、会社や学校では大抵 UTM が導入されており、外部の API を使うことは容易ではありません。
一部の UTM は SSL インスペクション機能を提供しており、SSL で暗号化された通信を監視するためにプロキシサーバー上で一度通信を復号化します。この復号化の際にサーバー証明書が UTM が独自に発行したものに差し替わるため、クライアント側に UTM の独自 CA 証明書をインストールし、その CA 証明書を使って認証する必要があります。
認証に使う CA 証明書の指定方法はアプリケーションによって異なり、OS の環境変数を参照するものと、アプリケーション固有の設定ファイルで指定するものがあります。Kaggle API は後者で、設定ファイル kaggle.json
に CA 証明書を指定する裏オプションを持っています。ただし、この記事を書いている時点の v1.5.8 の README にはこのオプションは明記されていないため、今後のバージョンアップでひっそりと使えなくなるかもしれません。
解決方法
1. UTM の独自 CA 証明書をインストール
UTM の独自 CA 証明書をインストールします。独自 CA 証明書の入手方法は UTM 毎に異なるため、UTM の管理者に聞いてください。独自 CA 証明書を入手したら、インストールします。インストール方法は以下の記事が詳しいです。
2. Kaggle API の設定ファイルに独自 CA 証明書のパスを指定
kaggle.json の ssl_ca_cert
オプションに、独自 CA 証明書のパスを指定します。以下は Ubuntu の場合です。Ubuntu だと全 CA 証明書を束ねた CA バンドル /etc/ssl/certs/ca-certificates.crt
があるので、それを指定します。
少し脱線しますが、Kaggle API はプロキシサーバーも設定ファイルで指定します。OS の環境変数 (HTTP_PROXY
など) は読み込んでくれないため、注意してください。
{
"username": ***,
"key": ***,
"proxy": ***,
"ssl_ca_cert": "/etc/ssl/certs/ca-certificates.crt"
}