2025年05月10日(土) - 19:42 | カテゴリ:
Linux
PCとサーバの通信制御用にSquidを使っており検証用にSSL復号化(SSL Bump)も利用している筆者。
約3年前にSSL Bumpを構築してから放置してたが、証明書が期限切れとなり通信出来なくなった。
通信出来ないとWebサイトを閲覧出来ない上、通信を追いかける調査にも支障が出るので更新してみた。
SSL Bumpの設定方法はSquid wikiを見て貰うとして、
証明書更新で問題になるのがSSL Bumpで必須となるSSL証明書の自動生成キャッシュだった。
SquidでSSL Bumpを実行するには、Squid本体が中間者攻撃の様にインターセプトする動作となるので、
PC ⇔ Squid・Squid ⇔ サーバで通信セッションを都度作り直す事となる。

SSL Bumpを動かすにはSSL復号化用のオレオレ証明書を作成し、
認証局の証明書をPC、サーバ証明書をSquidにインストールする必要があるのだが、
サーバ証明書を更新してもSquidが保持するSSL復号化用の証明書キャッシュを更新してくれないため、
Webブラウザでガチの中間者攻撃と検知されてしまい通信が出来なくなる。

………
Squidのcacheログには次のログが出力されるのみで内容を判断しにくい状態となっており、
フォーラムでもOpenSSLの出力するログなので、Squidでは無くOpenSSLを見る様に書かれている。
Error negotiating SSL connection on FD 1: error:00000001:lib(0):func(0):reason(1) (1/-1) RSA |
一概にズバリと解消できる方法は無いのがコレだが、
筆者の環境ではSquidの保持するSSL復号化用の証明書キャッシュを完全初期化する事で直った。
SSL復号化用証明書のキャッシュ保存先ディレクトリが “/var/cache/squid/ssl_db” の場合、
フォルダを削除した後に次の初期化コマンドを打ち込めばエラーが直るはず。
コレでもエラーが直らなかった場合は、証明書の生成コマンド自体を見直せば不具合が解消出来るかも。
rm -rf /var/cache/squid/ssl_db
security_file_certgen -c -s /var/cache/squid/ssl_db -M 4MB
chown -R squid.squid /var/cache/squid/ssl_db |
コマンドを打ち込んでSSL Bumpのキャッシュディレクトリを初期化した後は、
今まで通りにWebサイトをSSL復号化しつつ閲覧できた。
今の時代、SquidでSSL復号化をするケースは少ないかもだがTIPSとしてメモしておく。
« 続きを隠す