Linuxサーバ

Ubuntu+Apache2で構築したWEBサーバにSSL通信を導入

Let's Encryptより取得したサーバ証明書を使ってSSL通信を行う

WEBサーバの通信を暗号化(HTTPS化)するに当たり、先日SSL/TLSサーバ証明書を取得しました。

 

UbuntuでLet's Encryptの無料SSL/TLSサーバ証明書を取得する

 

今回はApache2の設定を修正してSSL通信を行えるようにしていきます。

 

Apache2でSSL/TLS通信を有効化する

Ubuntu上のApache2の場合

  1. SSL/TLSに関するモジュールを有効化する
  2. SSL/TLSに関するサイト設定ファイルを修正する
  3. 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などその他のサービスでも活用できるので、続けてそちらの修正も行ってしまいたいものです。

オススメの記事

-Linuxサーバ
-, ,