この記事は CentOS 6 を前提にした古いサーバー構築・保守手順の記録です。CentOS 6 は既にサポートが終了しているため、新規構築では現行の Linux ディストリビューションを利用してください。ここでは、当時の環境を保守・確認するための資料として整理しています。
TCP/IP、Ethernet、VLAN、ルーティングなど、ネットワークの基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
概要
Squid は高性能なプロキシサーバーソフトウェアの一つであり、ウェブコンテンツのキャッシュやアクセス制御を行うために広く使用されています。その中でも透過型プロキシは、クライアント側の設定を変更することなく、ネットワークを通過する通信を自動的にプロキシサーバー経由で処理する仕組みです。つまり、ユーザーが特別な設定を行うことなく、透過的にプロキシを利用できるのが特徴です。
しかし、Squid の透過型プロキシに関する多くの情報は HTTP に特化しており、HTTPS 通信を透過的に扱うには HTTP ベースの透過型プロキシだけでは不十分です。
この問題を解決するためには、Squid の動的 SSL 証明書発行 (Dynamic SSL Certificate Generation) を実装する必要があります。
具体的には、Squid に SSL/TLS 証明書を設定し、クライアントからの SSL/TLS 通信を Squid が中継する仕組みです。Squid が SSL/TLS のネゴシエーションを行い、クライアントは Squid と SSL/TLS 接続を確立します。自己署名証明書を使用する場合は、クライアント側で認証局のルート証明書を信頼する設定が必要です。
今回、CentOS 6 の Squid で SSL/TLS に対応した透過型プロキシの構築を試しましたが、CentOS 6 で提供されている Squid では、動的 SSL 証明書発行を使用するために必須である --enable-ssl-crtd が有効になっていません。--enable-ssl-crtd は Squid のコンパイル時に指定するオプションです。 --enable-ssl-crtd が有効であれば、以下のコマンドで証明書データベース用ディレクトリを作成し、データベースを初期化することができます。
/usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_dbソースから Squid をインストールすれば問題は解決しますが、私の環境では Yum でのパッケージ管理が基本方針となっているため、断念しました。CentOS 7の Squid ではこの問題は解消されている情報もありますので、OS をアップグレードした際に再度試す予定です。
関連記事
- CentOS 6 easy-rsa で自己署名証明書を作成する – OpenVPN 用 PKI の基本
- CentOS 6 OpenVPN サーバー構築 – 証明書とルーティングを含めた古い手順
- CentOS 6 OpenVPN クライアント設定 – 証明書配置と接続設定
- CentOS 6 OpenVPN と Quagga のルーティング問題 – OSPF と VPN 経路の注意点
断念した理由を残す価値
Squid の透過型プロキシで SSL まで扱おうとすると、証明書、クライアント信頼、暗号化通信の中間者処理、運用上の責任が絡みます。断念した記録は、単なる失敗談ではなく、無理に実装しない判断の根拠として意味があります。
- HTTP と HTTPS で透過プロキシの難しさが大きく違う。
- SSL bump には証明書配布と利用者への説明が必要になる。
- セキュリティ制御はプロキシだけでなく DNS / Firewall / 端末管理と合わせて考える。


