RaspberryPiで、旧ブラウザ用プロキシを作る
古いデバイスでTLS3.0とかに対応させたい
自宅にある旧環境、例えばMacOS10.6.8だとか、iOS5で止まっているiPadだとかは、最近のWEBサイトにアクセスすることができない。これは、近年のページは、ブラウザに対してTLS2.0ないし、3.0に対応することを求めているからである。例えば、初代iPadでヤフオクはできなくなっている。しかし、squidをSSLに対応するようビルドし、プロキシしてやれば、これらを回避することが可能になる。ただし、やり方は中間者攻撃そのものであるから、十分注意が必要である。自身が管理するネットワーク上で行わなければいけない。
参考
squidのビルド方法に関しては、
https://webnetforce.net/squid-ssl-bump/を参照した。
証明書の作成方法に関しては
http://kikumoto.hatenablog.com/entry/2016/06/04/124922を参考にした。
※というより、ほぼパクリ。
ビルド
依存関係
まず、aptよりソースをダウンロードできるように設定する。
sudo nano /etc/apt/sources.list を編集する。
#deb-src http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
deb-src http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi # コメントアウトを解除
コメントアウトを解除したら、下記のコマンドを実行する。
sudo apt update
sudo apt install devscripts build-essential fakeroot libssl-dev libldap2-dev libpam0g-dev libdb-dev cdbs libsasl2-dev debhelper libcppunit-dev libkrb5-dev comerr-dev libcap2-dev libecap3-dev
sudo apt install libexpat1-dev libxml2-dev libnetfilter-conntrack-dev nettle-dev libgnutls28-dev
apt install libssl1.0-dev
ビルド
依存関係が導入できたらビルドする。
sudo debuild -us -uc -b -j8
インストール
一つ上の階層に.debファイルができていると思うので
sudo dpkg -i squid※.deb
※はアスタリスクに置き換えて実行
何やら依存関係で言ってくる場合は
sudo dpkg -i --force-depends squid※armhf.deb
squid設定
cd /etc/squid
sudo mkdir ssl_cert
sudo chown proxy:proxy ssl_cert
sudo chmod 700 ssl_cert
sudo su
cd ssl_cert
openssl req -new -newkey rsa:2048 -sha256 -days 3650 -nodes -x509 -keyout myCA.pem -out myCA.pem
sudo nano /etc/squid/squid.conf
http://kikumoto.hatenablog.com/entry/2016/06/04/124922を丸写しで、squid.confを作成する。
sudo /usr/lib/squid/ssl\_crtd -c -s /var/lib/ssl\_db
※lib64は、raspbianにはない
sudo chown proxy:proxy -R /var/lib/ssl_db
※debianではproxyユーザー
sudo systemctl start squid
クライアントの設定
MacOS 10.6.8のSafariを例にとる。まず、オレオレ証明書をインストールする。
キーチェーンアクセスを開いて、横のペインから証明書をクリック。オレオレ証明書をドラッグ&ドロップする。
次に、ネットワーク→プロキシの設定を済ませる。

そうすると、なんと非対応のはずのヤフオクにアクセスできてしまうではないか!