SQA Insider

ソフトウェア品質保証、ソフトウェアテストについてのメモ書き。

動的SSL証明書発行 (Dynamic SSL Certificate Generation) が有効なSquidを作る

まともに動く環境にするまでかなりはまってしまったので、誰かの役に立つようにメモ。
CentOS 6.5 で動作確認。参考にした元ネタ: http://sysmagazine.com/posts/168515/

Squidで使用するOpensslの準備

インストール

wget http://www.openssl.org/source/openssl-1.0.0k.tar.gz
tar -zxf openssl-1.0.0k.tar.gz
cd openssl-1.0.0k
./config shared --prefix=/opt/squid/openssl --openssldir=/opt/squid/openssl
make
make install

ln -s /opt/squid/openssl/lib/libssl.so.1.0.0 /usr/lib64/libssl.so.1.0.0
ln -s /opt/squid/openssl/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.1.0.0

オレオレ証明書の発行

cd /opt/squid/etc/
openssl req -new -newkey rsa:1024 -days 365 -nodes -x509 -keyout squidCA.pem -out squidCA.pem
chmod 400 squidCA.pem
openssl x509 -in squidCA.pem -outform DER -out squid.der

Squid

インストール

wget http://www.squid-cache.org/Versions/v3/3.4/squid-3.4.6.tar.gz
tar -zxf squid-3.4.6.tar.gz
cd squid-3.4.6
./configure --prefix=/opt/squid --enable-ssl --enable-ssl-crtd --with-openssl=/opt/squid/openssl --enable-icap-client
make all
make install

証明書発行のキャッシュディレクトリを用意

mkdir /opt/squid/var/lib
/opt/squid/libexec/ssl_crtd -c -s /opt/squid/var/lib/ssl_db
chown -R nobody /opt/squid/var/lib/ssl_db

squid.conf の編集

下記の記述を追加。

####Dynamic Certificate Generation####
http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/opt/squid/etc/squidCA.pem
always_direct allow all
ssl_bump client-first all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER

Squidの起動準備

ログの所有者の変更と、(必要に応じて)スワップディレクトリの準備を行う。

chown -R nobody /opt/squid/var/logs
/opt/squid/sbin/squid -z

Squidの起動

/opt/squid/sbin/squid

クライアント側の準備

ブラウザーsquid.der をインポートしておく。

  • IEの場合「信頼されたルート証明機関」にインポートする。
  • Firefoxの場合、「この認証局による Web サイトの識別を信頼する」を選択してインポートする。