栃木県の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.15/Python-2.7.15.tgz
tar xzf Python-2.7.15.tgz
cd Python-2.7
./configure
make
#現状のPython2.6を残しつつ、Python2.7をインストール
make altinstall
#Python2.6を退避
cp /usr/bin/python /usr/bin/python2.6
#Python2.7 をリネーム
mv /usr/local/src/Python-2.7.15/python /usr/bin/python
#virtualenvをインストール
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
easy_install virtualenv

#SCLのインストール
yum install centos-release-SCL
yum update
#Python2.7とscl-utilsのインストール
yum install scl-utils python27 python27-scldevel
#Python2.6を退避
cp /usr/bin/python /usr/bin/python2.6
#Python2.7を有効化
scl enable python27 bash
#再起動時の自動有効化
echo 'source /opt/rh/python27/enable' > /etc/profile.d/python27.sh
source /etc/profile

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

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

#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 * * * scl enable python27 "certbot-auto renew --post-hook \"/sbin/service httpd graceful\" > /var/log/letsencrypt.log"

この記事について
  • スッキリ (1)
  • 普通 (0)
  • 消化不良 (0)