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

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

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