Let's Encryptより取得したサーバ証明書を使ってSSL通信を行う
WEBサーバの通信を暗号化(HTTPS化)するに当たり、先日SSL/TLSサーバ証明書を取得しました。
UbuntuでLet's Encryptの無料SSL/TLSサーバ証明書を取得する
今回はApache2の設定を修正してSSL通信を行えるようにしていきます。
Apache2でSSL/TLS通信を有効化する
Ubuntu上のApache2の場合
- SSL/TLSに関するモジュールを有効化する
- SSL/TLSに関するサイト設定ファイルを修正する
- Apache2を再起動する
というステップでSSL/TLS通信を有効化することができます。
# a2enmod ssl ↑SSLに関するモジュールを有効化する # vi /etc/apache2/sites-available/default-ssl.conf ↑設定ファイルを編集 以下修正箇所。 ServerAdmin = webmaster@example.com ↑管理者のメールアドレスへ修正 DocumentRoot = /var/www/html ↑ルートディレクトリとして公開するディレクトリのパスへ修正 SSLCertificateFile /etc/letsencrypt/live/hoge.example.com/cert.pem ↑取得したサーバ証明書と公開鍵のパスに変更 SSLCertificateKeyFile /etc/letsencrypt/live/hoge.example.com/privkey.pem ↑取得した秘密鍵のパスに変更 SSLCertificateChainFile /etc/letsencrypt/live/hoge.example.com/chain.pem ↑コメント解除して取得した中間証明書のパスに変更 Esc→:wqで保存して終了 # a2ensite default-ssl ↑サイト設定を有効化する # systemctl restart apache2 ↑Apache2の再起動
ここまでできたらブラウザより「https://example.com」に接続してみます。きちんとWEBページが表示されればOK!!
この時、通常のHTTP接続に対してHTTPSへのリダイレクトをかけることで常にSSL/TLS通信を行うことも可能となります。以下、設定ファイルに追記します。
# vi /etc/apache2/sites-available/000-default.conf ↑設定ファイルを編集。通常のHTTP用サイト設定に追記します。 <VirtualHost *:80> ~ ~ RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] ↑3行をVirtualhost内最下部にでも追記 </VirtualHost>
ブラウザよりHTTPで接続してみてきちんとHTTPSへリダイレクトされれば完成です。
最近ではGoogle検索の順位にも影響を及ぼすぐらい重要視されているSSL/TLSによる通信で、セキュリティ的にはもはや必須と言える条項ではないでしょうか。もちろん、2014年に発覚したハートブリード(Heartbleed)のような事例もあるので過信は禁物だと思いますが…。
少なくとも平文でやりとりを行う通常のHTTPと比べれば確実にセキュリティの向上には繋がるはずのSSL/TLS。WEBサーバだけではなくメールやFTPSなどその他のサービスでも活用できるので、続けてそちらの修正も行ってしまいたいものです。