0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HTTPSで通信する時のSNIを書き換える

Last updated at Posted at 2020-09-02

SNIの書き換え

サードパーティ製のhttpsクライアントを使っている時にSNIに対応していない為nginxなどでルーティングできない、実際とは違うSNIを試したい時があるかもしれない。

mitmproxyというproxyを使うことでSNIの書き換えができる場合がある。
今回は CONNECTメソッドが使えるクライアントを前提にしている。

ただしおそらく以下のURLのTransparent HTTPSの方式ならプロキシに対応していなくても書き換えられそうである。
https://docs.mitmproxy.org/stable/concepts-howmitmproxyworks

mitmproxyをpipなどでインストールする。
https://docs.mitmproxy.org/stable/overview-installation/

以下のプログラムをcustom_sni.pyとして保存する。

from mitmproxy import ctx, http
import mitmproxy

def next_layer(layer: mitmproxy.proxy.protocol.Layer):
    if isinstance(layer,mitmproxy.proxy.protocol.TlsLayer):
        layer._custom_server_sni="<解決したいSNI>"
        
    return layer

前準備としてmitmproxyの証明書(~/.mitmproxy/mitmproxy-ca-cert.cer)を許可しておく。
その後以下を実行することで、8080ポートでプロキシを開始する。

mitmproxy -s custom_sni.py

あとは使いたいクライアントでプロキシ設定をすれば良い

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?