CentOSのApacheで常時SSL通信

Google ChromeがVersion 62から常時SSL推奨となる予定です。
ブラウザを通してサイトに入力する情報すべてに対してセキュアであるように考えているようですね。決して悪いことではありません。遅くなりましたがこんばんわ、Web担当 神凪です。

Chromeだけとはいえ常時SSLを推奨するようになります。他のブラウザも追従する可能性が高いと見ます。
この際、ここで常時SSL対応してしまいましょう。
今回はLet’s Encryptのクライアントソフトウェア「Certbot」を使用し、SSL/TLS サーバ証明書の取得・更新作業を自動化できる仕組みを取り込みます。

目標

  • Webサーバとの通信内容を暗号化する
  • 常時SSL通信となるように設定変更する

環境

  • CentOS7.3
  • Apache/2.4.6

準備

手順

Certbotクライアントのインストール

cd /usr/local/
git clone https://github.com/certbot/certbot
cd
/usr/local/certbot/certbot-auto -n

サーバ証明書の作成

/usr/local/certbot/certbot-auto certonly --webroot -w [ドキュメントルート] -m [メールアドレス] -d [Webサーバー名] --agree-tos

mod_sslのインストール

yum -y install mod_ssl

Apache設定

vi /etc/httpd/conf.d/ssl.conf

変更ポイントは以下の通り。

SSLCertificateFile /etc/letsencrypt/live/sandbox.netcircus.jp/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sandbox.netcircus.jp/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/sandbox.netcircus.jp/chain.pem

ドメイン部分はサーバ証明書の作成で入力したサーバ名になります。

常時SSL + セキュリティ向上

vi /etc/httpd/conf.d/ssl.conf

変更ポイントは以下の通り

SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
SSLHonorCipherOrder on
Header always set Strict-Transport-Security "max-age=15768000"

SSLUseStapling          on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache        shmcb:/var/run/ocsp(128000)

1行目はSSL v2およびv3を無効化する設定です。
このあたりはSSL/TLS Deployment Best Practicesを参考に設定変更しています。
SSL v2は非セキュアなため使用するべきではない、等いろいろ書かれています。
参考にしてみてください

設定反映

systemctl reload httpd

SSLテスト

SSL Server Testでテストを行い、高評価を得ましょう。

終わりに

常時SSLだから通信は絶対大丈夫!というものではありませんが、セキュリティ要素の一つではあります。
これを機にひとつ常時SSLも挑戦してみてくださいね

設定値を自動生成してくれるサイトもあります。こちらも参考にどうぞ!

SandBoxも常時SSLに対応しましたよっ!

Special Thanks!

CloudGarage Dev Assist Program協力のもと、NCEでSandbox、実験場を作成しました。\
試せるシステムに限りはありますが、ぜひお試しくださいませ

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください