certbotを使ってWEBサーバーをSSL化

LET’S ENCRYPTのcertbotクライアントをインストールしてサーバー証明書を取得し、mod_SSLをインストールしてWEBサーバー間の通信を暗号化(SSL化)します。

※CentOS7関連のインストール・設定については「CentOSで自宅サーバー様」を参考に自分の環境に合わせて設定しています。

●EPELリポジトリ有効化
# yum -y install epel-release

certbot1

●certbotインストール
# yum -y install certbot

certbot2

●certbotテスト実行
# certbot

下記画面が表示されたらそのままサーバー証明書の取得に進む。

下記画面が表示されたら<No>を選択してサーバー証明書の取得に進む。

certbot-exec-test

●サーバー証明書取得
# certbot certonly –webroot -w ドキュメントルート(EX:/var/www/html/) -d WEBサーバー名(EX:vicsfactory.com) -d www.WEBサーバー名(EX:www.vicsfactory.com) -m メールアドレス –agree-tos

※ここで入力したメールアドレスは、緊急の通知、鍵を紛失したときの復旧、証明書の有効期限が近付いた場合の通知に使用されます。

無事サーバー証明書が発行されると下図の画面が表示されます。

certbot06

●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で取得したSSLサーバー証明書
certbot19

●サーバー証明書の更新

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+になることを確認する。

certbot13

カテゴリー: CentOS7 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です