VPSをプロキシサーバとして利用すると,アクセス元IPアドレスの書き換え,通信内容のキャッシュ,通信の暗号化などに役立ちます.本記事では,SquidキャッシュサーバとクライアントPC間の通信をSSLで暗号化するサーバをDockerで構築します.Dockerfileはこちらで公開しています.
VPSを準備する
ConoHaやさくらのクラウドなど,お好みのサービスを利用してVPSを準備します.当サイトはConoHaで運用しています.最終的には,ユーザとVPS間の通信が暗号化され,そこから先はHTTPでつながります.
SSL証明書を用意する
クライアントPCとキャッシュサーバ間の通信はHTTPSで暗号化します.そのため,暗号化に使う鍵とSSL証明書が必要です.自分しか使わない場合は自己証明書でも良いですが,他のユーザと共有する場合はSSL証明書を取得しておくと良いです.無料で証明書を発行するならStartSSLやLet’s Encryptなどが利用できるようです.当サイトの証明書はRapidSSLで年間10ドル程度です.
Dockerをインストールする
VPSに入れたLinuxディストリビューションに合わせてDockerをインストールします.Dockerの公式サイトにLinuxディストリビューションごとのインストール手順がまとまっています.
Squidサーバをデプロイする
まずはDockerfileを取得します.
1 2 |
git clone https://libertty.org/gitlab/tnakajima/docker-squid-ssl.git cd docker-squid-ssl |
Squidにアクセスを許可するユーザを追加します.
1 |
htdigest basic-credentials proxy <username> |
htdigest
コマンドが見つからない場合はインストールします.
1 |
sudo apt-get install apache2-utils |
次に,暗号化に使う鍵とSSL証明書を配置します.
1 2 |
cp /path/to/certificate ssl/server.crt cp /path/to/private-key ssl/server.key |
コンテナイメージを作成して実行します.ポート番号はお好みで変更してください.下の例ではVPSの8080番ポートへのアクセスをSquidに転送しています.
1 2 |
docker build --build-arg SQUID_VERSION=3.5.16 -t squid-ssl . docker run -d -p 8080:3128 --name squid-ssl squid-ssl |
docker ps
コマンドでコンテナの起動を確認します.
1 2 3 4 |
% docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b3e6c1d46b81 squid-ssl "bash /home/squid/sta" About an hour ago Up About an hour 0.0.0.0:8080->3128/tcp squid-ssl |
ファイアウォールの設定
外部からSquidへのアクセスを許可します.
1 |
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT |
ブラウザの設定を行う
Windowsの方はインターネットオプションから,Macの方はシステム環境設定のネットワークから,それぞれプロキシの設定を行います.Chromeをお使いの方はSwitchyOmegaというプラグインが便利です.
通信内容が暗号化されているか確認
以下はWiresharkを使って通信内容を確認したスクリーンショットです.プロキシを介したアクセスが暗号化されています.
広告欄