Squidとc-icapの連携

schedule 2020/11/05  refresh 2023/11/08

 

 

c-icapとは、オープンソースのICAPサーバーです。

 

今回はSquidとc-icapを連携する方法について、説明したいと思います。

 

 

必要なソフトウェアのインストール

CentOS7で、以下のパッケージをインストールして下さい。

 

# yum install squid
# yum install gcc

 

 

c-icapのインストール

http://c-icap.sourceforge.net/download.html からc-icapのソースファイルをダウンロードして、以下の手順でインストールして下さい。

 

# tar zxvf c_icap-0.5.6.tar.gz
# cd c_icap-0.5.6
# ./configure
# make
# make instal

 

 

Squidの設定

httpsでc-icapと連携するには、SSL Dumpの設定が必要になります。

 

SSL Dumpの設定を行うために以下の手順を実行して下さい。

 

# openssl req -new -newkey rsa:2048 -sha256 -days 3650 -nodes -x509 -extensions v3_ca -keyout squidCA.pem -out squidCA.pem -subj "/C=JP/ST=Tokyo/L=Toshima/O=Test,Inc./CN=<Squidのホスト名>"
# cp squidCA.pem /etc/squid/
# openssl x509 -in squidCA.pem -outform DER -out squidCA.der
# mkdir -p /var/lib/squid
# /usr/lib64/squid/ssl_crtd -c -s /var/lib/squid/ssl_db
# chown -R squid:squid /var/lib/squid
 

squidCA.pemは、SSL Dump用のSquidの自己証明書で、squidCA.derはブラウザに登録するためのSquidのCA証明書です。

 

次に、以下の設定を/etc/squid/squid.confに追加して下さい。

 

c-icapのechoというテスト用のサービスを呼び出す設定になっています。

 

http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/squidCA.pem

sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/lib/squid/ssl_db -M 4MB
ssl_bump server-first all
sslproxy_cert_error deny all

icap_enable on
icap_send_client_username on
icap_send_client_ip on
icap_client_username_header X-Authenticated-User
icap_service service_req reqmod_precache bypass=0 icap://127.0.0.1:1344/echo
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=0 icap://127.0.0.1:1344/echo
adaptation_access service_resp allow all

 

 

サーバーの起動

c-icap、Squidのサーバを起動します。
c-icapは、コンソールにログが出力されるように起動しています。

 

# /usr/local/bin/c-icap -N -D -d 10
# systemctl start squid

 

 

クライアントの設定

Windowsの”プロキシの設定”で”アドレス”にSquidのホスト名、ポートに3128を設定して下さい。

 

それから、ブラウザにsquidCA.derを信頼されたルート証明機関として登録して下さい。

 

ブラウザからWebサイトにアクセスると、c-icapのコンソールにブラウザのアクセスに関するログが出力されます。