LoginSignup
0
2

More than 3 years have passed since last update.

色々なツールのHTTPSリクエストを覗き見る方法メモ

Last updated at Posted at 2019-11-08

HTTPSで通信する色々なコマンドにMITMするためのパラメータの渡し方が微妙に違っていて毎回調べている気がするのでこっちに証明書ファイルとproxyのURLの渡し方をメモしていきます。
デバッグ用途で使う想定。

前準備

pemファイル作る

DER -> PEMの変換

openssl x509 -inform der -in cert.crt -out cert.pem

proxy立てる

立てるだけ。ここでは127.0.0.1:8080 に立ってる想定で話をします。

Ruby

v2.6 net/https でためした

$ SSL_CERT_FILE=./cert.pem HTTP_PROXY="http://127.0.0.1:8080"

gcloudコマンド

Google Cloud SDK 269.0.0 でためした
gcloudコマンドはHTTP_PROXYとHTTPS_PROXY環境変数を受け付けてそう。
configで証明書指定するとうっかりunsetし忘れそうなので誰か環境変数でセットする方法しってたら教えて下さい。

$ gcloud config set core/custom_ca_certs_file ./cert.pem
$ HTTPS_PROXY="http://localhost:8080" gcloud foo bar
$ gcloud config unset core/custom_ca_certs_file

Node.js

v12.9.0 でためした

$ CUSTOM_CA_CERTS_FILE=./cert.pem  HTTP_PROXY="http://localhost:8080" node ./main.js

kubectl

クライアント証明書による認証があるので、そのまま見るには設定ファイル( ~/.kube/config 等)から抜き出して2-3ステップ必要
kubectl proxy でkubernetes自体のproxyを立てればクライアント<->kubernetesのproxy間は平文で通信するので見れるかなと思ったが、環境変数で渡しても何故か見れなかったのでproxyではなくwiresharkとかでループバックインタフェースを眺めるのが一番はやい。

ちなみにlocalhost以外のcluster相手だと kubectl に証明書を渡す方法はわからなかったので以下のような感じで一旦検証自体をskipしてもらってproxy側にクライアント証明書食わせればproxyで見れることはわかった

$  HTTPS_PROXY=127.0.0.1:8080 kubectl --insecure-skip-tls-verify get pods
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2