VPS Lets Encrypt設定 自動更新

証明書のインストール

# cd /home/ユーザー名
# service httpd stop
# yum update
# yum -y install git
# git --version
git version 1.7.1

# git clone https://github.com/letsencrypt/letsencrypt
# cd letsencrypt

// 証明書作成
# ./letsencrypt-auto certonly -a standalone -d hoge.com(ドメイン名)

// 作成されたファイルを確認
# ls -1 /etc/letsencrypt/live/hoge.com(ドメイン名)
cert.pem
chain.pem
fullchain.pem
privkey.pem

// 再起動
# service httpd restart

今後の追加時

# systemctl stop httpd.service
# cd /home/ユーザー名/letsencrypt
# ./letsencrypt-auto certonly -a standalone -d fuga.com(ドメイン名)
# systemctl restart httpd.service

バーチャルホスト設定

# cd /etc/httpd/conf.d/

// 設定ファイル新規作成
# vi vhost_ssl.conf

// 下記を記述
NameVirtualHost *:443

<VirtualHost *:443>
    DocumentRoot /var/www/html/hoge.com(ドメイン名)/
    ServerName hoge.com(ドメイン名)
    SetEnv HTTPS on
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/hoge.com(ドメイン名)/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/hoge.com(ドメイン名)/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/hoge.com(ドメイン名)/chain.pem
    <Directory /var/www/html/hoge.com(ドメイン名)/>
        AllowOverride All
        Options FollowSymLinks
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

「http」接続を「https」にリダイレクト

// バーチャルホスト(http接続)設定ファイルを編集
# cd /etc/httpd/conf.d

<VirtualHost *:80>
  ServerName.hoge.com(ドメイン名)
  <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
  </IfModule>
</VirtualHost>

cronで証明書自動更新

時刻確認

JST(Local time)が9時間早い場合は、「chrony(時刻同期)」をインストールして時刻合わせ(ページ最下部に記載)。

# timedatectl
      Local time: 木 2016-12-29 10:02:42 JST
  Universal time: 木 2016-12-29 01:02:42 UTC
        RTC time: 木 2016-12-29 10:02:40
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

crondが起動しているか確認

# service crond status
// 起動していなかったら # service crond start

シェルスクリプト

#cd /home/ユーザー名
# vi cron-renew-letsencrypt.sh
#! /bin/bash
systemctl stop httpd.service
cd /home/ユーザー名/letsencrypt
./certbot-auto renew --quiet > /var/log/certbot.renew.log 2>&1
systemctl start httpd.service

crontab

# crontab -u root -e

参考:http://y-stream.blogspot.jp/2011/07/crontab.html

#毎月1日の朝5時に実行
00 05 01 * * /home/ユーザー名/cron-renew-letsencrypt.sh

パーミッション設定

// rootで実行可にする
# chmod 755 /home/ユーザー名/cron-renew-letsencrypt.sh

ログ確認

# cat /var/log/cron

chrony(時刻同期)インストール

# yum install chrony
# vi /etc/chrony.conf
// 変更前
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
・
・
# allow 192.168/16

// 変更後
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp
・
・
# allow 192.168/16
// サーバーのIPアドレス
allow xxx.xxx.xxx.xxx

再起動・自動起動設定

# systemctl restart chronyd
# systemctl enable chronyd
# systemctl list-unit-files -t service | grep chronyd

動作確認

# chronyc sources
# date
PAGE TOP