memo

"*.hogehoege.com"(ドメイン名は仮)のオレオレ証明書を作成し、squidに登録するまでの道のり。

サブドメインに対応できるように、ドメイン名をアスタリスクで指定しているが、

ドットが2つ入るような、www.blog.hogehoge.comには対応していない模様


環境

$ lsb_release -r
Release:        14.04


CA構築

sudo -s
mkdir -p /home/demoCA
mkdir /home/demoCA/{certs,crl,newcerts,private}
chmod 0700 /home/demoCA/private
echo 01 > /home/demoCA/serial
touch /home/demoCA/index.txt
openssl req -new -x509 -keyout /home/demoCA/private/cakey.pem -out /home/demoCA/cacert.pem -days 3650

  ~略~
Verifying - Enter PEM pass phrase:     ※パスワード入れないとエラーになるので入力
-----
  ~略~
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Setagaya-ku
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:*.hogehoge.com
Email Address []:


csr生成

mkdir -p /etc/squid/ssl/private
chmod 0700 /etc/squid/ssl/private
openssl genrsa -des3 -out /etc/squid/ssl/private/serverkey.pem 2048
chmod 0400 /etc/squid/ssl/private/serverkey.pem
openssl req -new -key /etc/squid/ssl/private/serverkey.pem -out /etc/squid/ssl/server.csr    ※CA構築時と同じ情報を対話的に入力


サーバ証明書作成

※/homeに移動するのがポイント:http://askubuntu.com/questions/382611/file-says-it-doesnt-exist-but-it-is-right-there

cd /home; pwd
openssl ca -in /etc/squid/ssl/server.csr -keyfile /home/demoCA/private/cakey.pem -cert /home/demoCA/cacert.pem -out /etc/squid/ssl/cert.pem

証明書からパスワード除去

openssl rsa -in /etc/squid/ssl/private/serverkey.pem -out /etc/squid/ssl/private/nopass_serverkey.pem ※CSR作成時のパスワード入力


squid3設定

証明書を読み込む設定に変更

$ sudo vi /etc/squid3/squid.conf
  ~中略~

acl hogewww   dstdomain www.hogehoge.com   hogehoge.com
https_port 443 accel vhost cert=/etc/squid/ssl/cert.pem key=/etc/squid/ssl/private/nopass_serverkey.pem
cache_peer www.hogehoge.com parent 443 0 no-query originserver name=hogewww
cache_peer_domain hogewww www.hogehoge.com hogewww
 ~中略~

起動失敗

設定ファイルをチェックすると、ubuntuのバイナリだとsslを利用できない模様。。

$ sudo squid3 -k parse
2014/06/01 08:20:43| ERROR: 'https_port' requires --enable-ssl

squid3再起動

$ sudo service squid3 restart