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