手当たり次第に書くんだ

飽きっぽいのは本能

CentOS 6 Squid SSL 対応の透過型プロキシを断念した理由

この記事は CentOS 6 を前提にした古いサーバー構築・保守手順の記録です。CentOS 6 は既にサポートが終了しているため、新規構築では現行の Linux ディストリビューションを利用してください。ここでは、当時の環境を保守・確認するための資料として整理しています。

CentOS 6 サーバー構築・保守ガイドへ戻る

概要

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 をアップグレードした際に再度試す予定です。

関連記事

断念した理由を残す価値

Squid の透過型プロキシで SSL まで扱おうとすると、証明書、クライアント信頼、暗号化通信の中間者処理、運用上の責任が絡みます。断念した記録は、単なる失敗談ではなく、無理に実装しない判断の根拠として意味があります。

  • HTTP と HTTPS で透過プロキシの難しさが大きく違う。
  • SSL bump には証明書配布と利用者への説明が必要になる。
  • セキュリティ制御はプロキシだけでなく DNS / Firewall / 端末管理と合わせて考える。
CentOS 6 Squid SSL 対応の透過型プロキシを断念した理由

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る