■ はじめ
https://dk521123.hatenablog.com/entry/2017/06/23/223438
https://dk521123.hatenablog.com/entry/2017/06/26/224311
の続き。
【0】前提条件
* 以下の関連記事を参考に、Squid を設定しておくこと
プロキシサーバ / Squid ~ Linux / 初期設定編 ~
https://dk521123.hatenablog.com/entry/2017/06/23/223438
【1】構文
* cert=【サーバー証明書のパス名】 * key=【秘密鍵のパス名】
【2】構成
+-----------+ +-----------+ +-----------+ http | | https | | https | | --------| SSL Proxy |-------| Internet |-------| Any (SSL) | 3128 | | 443 | | 443 | Server | +-----------+ +-----------+ +-----------+
【3】準備
1)証明書ファイルの作成
* とりあえず、今回はオレオレ証明書で。 (詳細は、以下の関連記事の「[1] 認証局(CA)の生成」を参照のこと)
証明書ファイルを配置する
sudo cp /etc/pki/CA/private/ca.key /etc/squid/. sudo cp /etc/pki/CA/cacert.pem /etc/squid/. sudo ls -l /etc/squid
プロキシサーバ側のファイル
# | ファイル名 | 説明 | 備考 |
---|---|---|---|
1 | /etc/squid/ca.key | CAの秘密鍵ファイル(パスフレーズなし) | パスフレーズなしの秘密鍵じゃないとエラーになる |
2 | /etc/squid/cacert.pem | CAの証明書ファイル | - |
【4】構築手順
0)はまりポイント
[1] パスをミスってる(「/usr/lib64/squid/ssl_crtd」周辺) [2] パスフレーズありの秘密鍵ファイルを使用している(「key=/etc/squid/ca.key」周辺) [3] 証明書ファイルが正しく作成できていない
1)証明書が保存されるディレクトリの作成
sudo /usr/lib64/squid/ssl_crtd -c -s /var/db/ssl_db sudo chown squid:squid -R /var/db/ssl_db
2)設定ファイル「squid.conf」の修正
sudo vi /etc/squid/squid.conf #http_port 3128 http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/cacert.pem key=/etc/squid/ca.key ssl_bump bump all sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/db/ssl_db -M 4MB
3)Squid を再起動する
# 再起動 sudo systemctl restart squid # 「active (running) 」であることを確認 sudo systemctl status squid # 使用しているポート番号一覧表示し、「3128」が表示されることを確認 ss -tln
4)動作確認
[0] Firefoxなどのブラウザで、「yahoo.co.jp」をアクセスする(不正なサイトなどのエラーが表示される) [1] 証明書ファイル「cacert.pem」を確認したい環境(WindowsPCなど)にもってくる [2] Firefoxなどのブラウザで、証明書ファイル「cacert.pem」をインポートしておく [3] Firefoxなどのブラウザで、「yahoo.co.jp」をアクセスする(「yahoo.co.jp」が表示されるはず)
【5】補足:別の設定
acl tcp_level at_step SslBump1 acl client_hello_peeked at_step SslBump2 ssl_bump peek tcp_level all acl to_target_host_ssl ssl::server_name 【SANsに記載されているホスト名/IPアドレス】 ssl_bump splice client_hello_peeked to_target_host_ssl # SANsに記載されているホスト名/IPアドレスと正規証明書以外のサイトをエラーにしたい場合はコメントアウト #ssl_bump terminate all ssl_bump bump all
参考文献
http://qiita.com/suzukis/items/5049f39cb1ee51e94a23
http://pslabo.hatenablog.com/entry/20150703/p1
http://mz80.ism21.net/?Linux%20Memo%2Fsquid(%A5%EA%A5%D0%A5%D7%A5%ED)
http://server-setting.info/centos/squid-reverse-proxy.html
http://oracle-abc.wikidot.com/ja:squid-reverse-proxy-for-ssl
関連記事
【ネットワーク】プロキシ / Proxy
https://dk521123.hatenablog.com/entry/2017/08/08/224300
プロキシサーバ / Squid ~ Linux / 初期設定編 ~
https://dk521123.hatenablog.com/entry/2017/06/23/223438
プロキシサーバ / Squid ~ Linux / Basic認証編 ~
https://dk521123.hatenablog.com/entry/2017/06/26/224311