□Let’s encrypt SSLを導入してみる
□Let’s encrypt SSLを導入してみる
MyDNS.JPのユーザーから
を使ってもいいですかー?と質問されたので、いいですよーとお答えしておきました。
で、ついでに自分も試してみることにしました。:-)
まずPythonを2.7にあげる
apt-get -y install python27*
※VineLinuxの場合にはaugeasを手動でインストール。
cd /usr/src/package/
wget http://download.augeas.net/augeas-1.4.0.tar.gz
cd ../
tar xvzf package/augeas-1.4.0.tar.gz
cd augeas-1.4.0/
./configure –prefix=/usr
make
make install
ldconfig
ldconfig -p | grep libaugeas
で、Python-2.7が入ったら、
cd ~/
git clone https://github.com/letsencrypt/letsencrypt.git
cd ~/letsencrypt
./letsencrypt-auto –help
で、OS別に./boot/~.shを動かせとかドキュメントには書いてあるけど、実際には
apt-get install -y \
git \
python \
python-devel \
python-virtualenv \
gcc \
dialog \
openssl-devel \
libffi-devel \
ca-certificates
こんなパッケージ類のインストールをしているだけ。
で、
libaugeas0 \
…はVineではパッケージが無いので、上記のようにインストールしておく。
準備が出来たら
./letsencrypt-auto certonly \
–webroot –webroot-path /home/example/html -d ssl.example.jp \
–agree-tos -m webmaster@example.jp
とすると、
> IMPORTANT NOTES:
> – Congratulations! Your certificate and chain have been saved at
> /etc/letsencrypt/live/ssl.example.jp/fullchain.pem. Your cert will
> expire on 2016-03-07. To obtain a new version of the certificate in
> the future, simply run Let’s Encrypt again.
> – If like Let’s Encrypt, please consider supporting our work by:
>
> Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
> Donating to EFF: https://eff.org/donate-le
となる。
ls -la /etc/letsencrypt/live/ssl.example.jp/
> lrwxrwxrwx 1 root root 39 12月 8 13:08 cert.pem -> ../../archive/ssl.example.jp/cert1.pem
> lrwxrwxrwx 1 root root 40 12月 8 13:08 chain.pem -> ../../archive/ssl.example.jp/chain1.pem
> lrwxrwxrwx 1 root root 44 12月 8 13:08 fullchain.pem -> ../../archive/ssl.example.jp/fullchain1.pem
> lrwxrwxrwx 1 root root 42 12月 8 13:08 privkey.pem -> ../../archive/ssl.example.jp/privkey1.pem
に公開鍵と秘密鍵が出来ている。
これを以下のように設定する
cat > /etc/apache2/conf.d/vhosts/ssl.example.jp.conf
----------
<VirtualHost *:80>
ServerAdmin webmaster@example.jp
ServerName ssl.example.jp
ServerAlias www.ssl.example.jp
# SuexecUserGroup apache apache
DocumentRoot /home/example/html
ErrorLog /home/example/logs/error_log
CustomLog /home/example/logs/access_log combined
ErrorDocument 404 /
CBandSpeed 80Mbps 200 100
CBandRemoteSpeed 50Mbps 50 50
<Location /traffic-status>
SetHandler cband-status
Order allow,deny
Allow from 210.197.72. 210.197.73. .big.or.jp .bbexcite.jp
</Location>
<Directory />
AllowOverride All
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@example.jp
ServerName ssl.example.jp
ServerAlias www.ssl.example.jp
# SuexecUserGroup apache apache
DocumentRoot /home/example/html
ErrorLog /home/example/logs/error_log
CustomLog /home/example/logs/access_log combined
ErrorDocument 404 /
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!SSLv3:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/letsencrypt/live/ssl.example.jp/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ssl.example.jp/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/ssl.example.jp/fullchain.pem
<Files ~ “\.(cgi|shtml|phtml|php3?)$”>
SSLOptions +StdEnvVars
</Files>
<Directory “/var/www/cgi-bin”>
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent “.*MSIE.*” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
<Directory />
AllowOverride All
</Directory>
</VirtualHost>
----------
あとは定期的に鍵の更新を実行すればよい。
cat > /root/renew_sslkey.sh
----------
#!/bin/sh
/root/letsencrypt/letsencrypt-auto certonly –webroot –webroot-path /home/example/html -d ssl.example.jp –renew-by-default
----------
※SCLを使ってPythonを入れた場合には、上記のコマンドそのものを
「/usr/bin/scl enable python27 ‘/root/letsencrypt/letsencrypt-auto …’」
というようにくくればOK
chmod 700 /root/renew_sslkey.sh
として、これを定期的に実行すればいい。
----------
#
# RENEW SSL
50 11 1 * * /root/renew_sslkey.sh > /var/log/renew_sslkey.log
----------
複数ドメインを利用する場合には、
NameVirtualHost *:443
を忘れずに。
そのドメインでWordPressを動かしていたら、ダッシュボードから設定に入って、
URLを「http://~」から「https://~」にするだけでOK。楽チン!!
補足:
・punnycodeなドメイン(日本語ドメインとか)には対応していない…(´・ω・`)
Pingback: Let’s Encryptの証明書が発行された! | 備忘録