以前の記事でPrivoxyをインストールしましたが、
最近調べた所、その次のバージョンから試験的にHTTPS Inspectionに対応していました。
HTTPS Inspectionとは、ファイアウォールやプロキシサーバが、クライアントとサーバの間に入り、一旦HTTPSの暗号化を解除し、通信の中身を検査する機能のことです。
これにより、セキュリティ上のリスクを排除したり、広告のダウンロードをブロックことができます。
以前のPrivoxyはHTTPS通信の中身を見ることはせず、アクセス先のサーバで判断してブロックしてきました。
しかし、今回からHTTPSの中身を確認しブロックが可能になります。
今回、Privoxy の HTTPS Inspection機能をテストしてみましたので、その結果を記載します。
インストール
./configureで、--with-mbedtls または、--with-openssl を付けることで、HTTPS Inspectionに対応します。
私は、OpenSSLを使っているため、--with-opensslを付けました。
その他の詳細は、以前の記事をご覧ください。
wget https://www.privoxy.org/sf-download-mirror/Sources/3.0.32%20%28stable%29/privoxy-3.0.32-stable-src.tar.gz
tar -xvf privoxy-3.0.32-stable-src.tar.gz
cd privoxy-3.0.32-stable
autoheader
autoconf
./configure --disable-toggle --disable-editor --disable-force --with-openssl
make
make install USER=privoxy GROUP=privoxy
設定
認証局準備
HTTPS Inspectionは、HTTPSの暗号解除を行いますが、クライアントに渡す時に再度暗号化します。
その時に、サーバ毎に暗号鍵とサーバ証明書を生成する必要があり、証明書を発行する認証局(CA)を準備する必要があります。
今回は、サーバ側の負荷が小さいとされるECDSA証明書を作成します。
cd /usr/local/etc/privoxy/ mkdir CA chown privoxy. CA cd CA openssl ecparam -out cakey.pem -name secp384r1 -genkey openssl req -new -x509 -key cakey.pem -sha384 -days 3650 -out cacert.crt -extensions v3_ca (地域や組織名の指定はお好きなように) chown privoxy. *
信頼するルート証明書準備
この証明書は、PrivoxyがHTTPSサイトにアクセスする際に、証明書の検証に使用するルート証明書群です。
cd /usr/local/etc/privoxy/CA wget https://curl.se/ca/cacert.pem mv cacert.pem trustedCAs.pem
生成する証明書を格納するディレクトリ作成
サーバ毎に暗号鍵とサーバ証明書を生成しますが、それを格納するディレクトリです。
現在のPrivoxyには、不要になった証明書の削除などの処理は無く、生成され続けるので、/var内が良いかもしれませんが、今回はテストなので以下とします。
cd /usr/local/etc/privoxy mkdir certs chown privoxy. certs
設定変更
configファイルの編集や280blockerは、以前の記事と同じです。
以下では、HTTPS Inspection関連の設定を記載します。
cd /usr/local/etc/privoxy/ vi config #ca-directory /usr/local/etc/privoxy/CA ↓ ca-directory /usr/local/etc/privoxy/CA #certificate-directory /usr/local/var/privoxy/certs ↓ certificate-directory /usr/local/etc/privoxy/certs
HTTPS Inspectionを行うURLを指定する、+https-inspectionをルールに追加します。
今回はすべてのURLを対象とするため、以下に追加します。
vi match-all.action
{ \
+change-x-forwarded-for{block} \
+client-header-tagger{css-requests} \
+client-header-tagger{image-requests} \
+client-header-tagger{range-requests} \
+hide-from-header{block} \
+set-image-blocker{pattern} \
+https-inspection \ ←追加
}
PCに作成したCA証明書をインストール
作成したCA証明書をクライアントPCにインストールします。
cacert.crtをWinSCPなどでPCにダウンロードし、Chromeであればインターネットオプションの証明書に、FirefoxならFirefoxのオプションでインポートします。
詳細は他サイトでご確認ください。
動作確認
Firefoxで価格.comにアクセスし、Privoxy無し/有り/有り+HTTPS Inspectionで差分を確認しました。
Privoxy無し
Privoxy無しのアクセスでは、広告が表示されています。
Privoxy有り
HTTPS Inspection無しのPrivoxyでも広告を除去できています。
Privoxy有り+HTTPS Inspection
HTTPS Inspection有りのPrivoxyでは、更にfacebookのいいね!ボタンが消えています。
それ以外は、HTTPS Inspection無しと見た目は変わりません。
ログを確認すると、HTTPS Inspection無しではサーバレベルでのブロックが、HTTPS Inspection有りではURLレベルでのブロックが出来ており、より多くブロックができるようになっています。
■HTTPS Inspection無しのログ Crunch: Blocked: cdn.bigmining.com:443 Crunch: Blocked: asia.creativecdn.com:443 Crunch: Blocked: tg.socdm.com:443 Crunch: Blocked: ads.rubiconproject.com:443 Crunch: Blocked: securepubads.g.doubleclick.net:443 Crunch: Blocked: www.google-analytics.com:443 Crunch: Blocked: sync.im-apps.net:443 Crunch: Blocked: pubads.g.doubleclick.net:443 Crunch: Blocked: googleads.g.doubleclick.net:443 Crunch: Blocked: kakakucom.112.2o7.net:443 Crunch: Blocked: x.bidswitch.net:443
■HTTPS Inspection有りのログ Crunch: Blocked: https://www.google.com/adsense/search/ads.js Crunch: Blocked: https://www.google.com/adsense/search/ads.js Crunch: Blocked: https://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fkakaku.com%2Fpc%(略) Crunch: Blocked: https://cdn.bigmining.com/js/k3c_bigmining.js Crunch: Blocked: https://img1.kakaku.k-img.com/images/kaden/article/newlife/banner/64x48.png Crunch: Blocked: https://tg.socdm.com/aux/idsync?proto=treasuredata_global Crunch: Blocked: https://cdn.treasuredata.com/sdk/2.1/td.min.js Crunch: Blocked: https://asia.creativecdn.com/tags?type=iframe&id=pr_Bk0nbSAtG0K3eOXvldrV&(略) Crunch: Blocked: https://img1.kakaku.k-img.com/images/okurimono/lifeevent/birthday/2021/banner/64x48.png Crunch: Blocked: https://ads.rubiconproject.com/prebid/12154_k_prod.js Crunch: Blocked: https://www.google-analytics.com/analytics.js Crunch: Blocked: https://sync.im-apps.net/imid/segment?token=dmJmXE6ihffGM09UZqwoBg&(略) Crunch: Blocked: https://googleads.g.doubleclick.net/pagead/viewthroughconversion/1039335471(略) Crunch: Blocked: https://pubads.g.doubleclick.net/activity;dc_iu=/116070306/k;k_Top_Category=pc;(略) Crunch: Blocked: https://securepubads.g.doubleclick.net/tag/js/gpt.js Crunch: Blocked: https://x.bidswitch.net/sync?ssp=dgarage Crunch: Blocked: https://kakakucom.112.2o7.net/b/ss/kakakucomkakakucom/1/JS-1.6.1/s65816534434401(略)
ただ、HTTPS Inspectionを有効にすると、かなり重くなります。
リンク先が多いサイトでは、何分待っても表示されなかったりします。
YouTubeでは、広告やバナーが表示されませんが、開始6秒で再生が止まってしまいました。
最後に
HTTPS Inspectionは、重い割に効果が少なく、表示されないサイトもあるため、実用的ではありませんでした。
まだ試験的な機能なので、今後改善されていくかもしれません。
Do you experiencing high cpu usage while using privoxy with https inspection?
I set up my browser proxy to use privoxy with https inspection enabled, and my cpu fan is running wild and cpu usage is higher than browser + ublock origin extension. With cpu usage that high I don't think I will set it up on my raspberry pi, let alone vps.
Do you have any solution? And thanks to write this tutorial, it really helped me.
コメントありがとうございます。
CPU使用率は、アクセスするサイトにもよりますが、100%になることもあります。
解決策は今のところ無いと思います。
ちなみに、私が使っているCPUは、Celeron N3150です。
今回3.0.33で、久しぶりに使ってみましたが、割と使えると感じました。