RaspberryPiで、旧ブラウザ用プロキシを作る

Page content

古いデバイスで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
の行をコメントアウトする。保存して、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
※これはビルドしないとわからなかった
http://thr3a.hatenablog.com/entry/20180722/1532225975

make

sudo debuild -us -uc -b -j8
※-j8がないととても遅い。入れても遅い。-j4くらいでもいいかも?

インストール

一つ上の階層に.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を例にとる。まず、オレオレ証明書をインストールする。
キーチェーンアクセスを開いて、横のペインから証明書をクリック。オレオレ証明書をドラッグ&ドロップする。

次に、ネットワーク→プロキシの設定を済ませる。

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