SSL証明書が無料で取れるLet’s EncryptをApache 2.4/CentOS 7に導入。
目次
ApacheにVirtual Hostを設定
vim /etc/httpd/conf/httpd.conf
httpd.confの末尾に以下を追加
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin [管理者のメールアドレス]
DocumentRoot [HTMLのルートディレクトリパス]
ServerName [ホスト名]
</VirtualHost>
Let’s Encryptを設定
この項の処理は全部ここに書いてあります
https://certbot.eff.org/#centosrhel7-apache
ツールをインストール
yum install python-certbot-apache
ツールを実行
certbot --apache
対話式なので指示に従う
ApacheにSSL証明書を設定
- httpd.confを設定
vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
NameVirtualHost *:443 //追加
//<VirtualHost *:80>の中を以下のように編集するとHTTPでのリクエストをHTTPSにリダイレクトする
<VirtualHost *:80>
ServerName [ホスト名]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
</VirtualHost>
//ここから下を追加
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/[ドメイン名]/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/[ドメイン名]/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/[ドメイン名]/chain.pem
ServerAdmin [管理者のメールアドレス]
DocumentRoot [HTMLのルートディレクトリパス]
ServerName [ホスト名]
</VirtualHost>
自動更新を設定
Let’s Encryptの証明書は3ヶ月しか期限がないので自動更新するように設定する
正しく更新できるか確認
certbot renew --dry-run
Congratulations… と表示されることを確認
crontabに自動更新を設定
必要なとき(一般に有効期限が30日を切った場合らしい)のみ更新が実行されるので毎日スクリプトを実行して問題ない
vim /etc/crontab
//末尾に追加
1 5 * * * root certbot renew --quiet
それにしても無料でSSL証明書がしかもこんな簡単に設定できるとはなんていい時代になったんだろう…
参考
- https://www.websec-room.com/2016/10/01/2698
脚注
この記事は、http://qiita.com/Ayame/items/42d9fcac64085bacbb73の加筆修正版です。