栃木県のJavaエンジニア、WEBプログラマーのためのサイト

2018.04.11さくらのVPSで let’s encrypt

さくらのVPSで、let’s encrypt を設定しようとしたら、pythonのバージョンが合わなくて
ちょっとハマったのでメモ。

yumがPython2.6で動作しているので、Python2.6を残す必要があります。
Let’s Encryptが動作するには、Python2.7にする必要があります。

というわけで、2.6 / 2.7 が並存するようにします。


#Python2.7をビルド
yum -y install zlib-devel openssl-devel tk-devel
cd /usr/local/src
curl -O https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
tar xzf Python-2.7.13.tgz
cd Python-2.7.13
./configure
make

#現状のPython2.6を残しつつ、Python2.7をインストール
make altinstall

#Python2.6を退避
cp /usr/bin/python /usr/bin/python2.6

#退避した2.6のバージョンを確認
python2.6 --version

#Python2.7 をリネーム
mv /usr/local/src/Python-2.7.13/python /usr/bin/python

#バージョン確認(2.7なら正常)
python --version

#virtualenvをインストール
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
easy_install virtualenv

#yum の実行バージョンを2.6にします。
vi /usr/bin/yum
#1行目を変更
#!/usr/bin/python → #!/usr/bin/python2.6

続いて、Let’s Encrypt をインストールします。
(上記のPython2.7の設置を省いて、どんなエラーが出るのか試してみるのも一興。)


curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
chmod 755 /usr/bin/certbot-auto
certbot-auto --os-packages-only --non-interactive

対話式は面倒なので、ワンライナーで証明書を生成します。


certbot-auto certonly --non-interactive --agree-tos --webroot -w [DocRoot] -d [HOSTNAME] --email [EMAIL]

各条件が正常であれば、
/etc/letsencrypt/live/[HOSTNAME]/
に証明書、秘密鍵、中間証明書が生成されます。

最後にcronabで自動更新を設定します。


crontab -e
#下記を追加(apache の再起動・ログの位置は各々)
50 3 * * * certbot-auto renew --post-hook "service httpd graceful" > /var/log/letsencrypt.log