LET’S ENCRYPTのcertbotクライアントをインストールしてサーバー証明書を取得し、mod_SSLをインストールしてWEBサーバー間の通信を暗号化(SSL化)します。
※CentOS7関連のインストール・設定については「CentOSで自宅サーバー様」を参考に自分の環境に合わせて設定しています。
●EPELリポジトリ有効化
# yum -y install epel-release
●certbotインストール
# yum -y install certbot
●certbotテスト実行
# certbot
下記画面が表示されたらそのままサーバー証明書の取得に進む。
下記画面が表示されたら<No>を選択してサーバー証明書の取得に進む。
●サーバー証明書取得
# certbot certonly –webroot -w ドキュメントルート(EX:/var/www/html/) -d WEBサーバー名(EX:vicsfactory.com) -d www.WEBサーバー名(EX:www.vicsfactory.com) -m メールアドレス –agree-tos
※ここで入力したメールアドレスは、緊急の通知、鍵を紛失したときの復旧、証明書の有効期限が近付いた場合の通知に使用されます。
無事サーバー証明書が発行されると下図の画面が表示されます。
●mod_SSLインストール
# yum -y install mod_ssl
●SSL設定ファイル編集
# vi /etc/httpd/conf.d/ssl.conf
以下を記述
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
↓
SSLCertificateFile /etc/letsencrypt/live/WEBサーバー名/cert.pem
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
↓
SSLCertificateKeyFile /etc/letsencrypt/live/WEBサーバー名/privkey.pem
#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
↓
SSLCertificateChainFile /etc/letsencrypt/live/WEBサーバー名/chain.pem
●httpd設定反映
# systemctl reload httpd
ルーターでTCP443番をサーバーに通すように設定する。
ブラウザでhttps://WEBサーバー名でアクセスし、セキュリティ警告が出ずにサイトが表示されることを確認。
●サーバー証明書の更新
LET’S ENCRYPTのサーバー証明書の有効期限は90日間なので、期限の近づいた証明書を自動的に更新するようにします。
更新テスト
# certbot renew –dry-run
※renewコマンドは取得した全てのサーバー証明書の中で有効期限が1ヶ月を切った証明書だけを更新します。
※残り有効期限を無視して強制的に更新する場合はcertbot renewに–force-renewオプションを付けます。
(LET’S ENCRYPTのサーバー証明書の発行は週に20個までなので、あまり頻繁に–force-renewで更新するのは止めましょう)
※renewコマンドに–dry-runオプションを付けるとサーバー証明書の更新はされずに動作のみ確認出来ます。
テストで動作確認が出来たらcrontabに以下を登録して月に一度certbot renewを実行させます。
00 00 01 * * /usr/bin/certbot renew && /bin/systemctl reload httpd
上記の例では毎月1日の午前0時にサーバー証明書の更新を行い、httpd設定ファイルをリロードして更新されたサーバー証明書を有効化します。
●SSL Server TestでA+評価を得るための設定
# vi /etc/httpd/conf.d/ssl.conf
・SSLプロトコルをTLSv1.2のみに限定
SSLProtocol all -SSLv2
↓
SSLProtocol +TLSv1.2
・#SSLHonorCipherOrder onの下に以下を追記
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:
ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS (ここまで1行で記述)
SSLHonoeCipherOrder on
・</VirtualHost>の上に以下を追記
Header always set Strict-Transport-Security “max-age=15768000”
●httpd設定反映
systemctl reload httpd
●SSL Server Test でWEBサーバー名を入力し、テスト結果が下図のようにA+になることを確認する。