Let's Encryptを使ってSSL通信してみた(Cent OS 6 + Apache2)
Let's Encryptが正式サービスを開始したということで、試しに使ってみました。
Let's EncryptはSSL/TLSによるHTTPS通信を行うためのサーバ証明書を誰でも簡単に取得、インストールできるサービスです。また、サーバ証明書の取得とインストールを自動化できることも大きな特徴です。
今回はサクラVPSでレンタルしたCent OSに、Certbotクライアントを用いてLet's Encryptを導入してみました。
【環境】
Cent OS 6.8
Apache 2.2.15
Let's Encryptって?
通常、SSL/TLSによるサーバ認証を行うためには、シマンテックなどの認証局からサーバー証明書を発行してもらい、自サーバーにインストールする必要がありますが、ただでは発行はしてもらえませんし、手続き等も必要になります。
あるいは自分で認証局を立ててサーバ証明書を作成することもできますが、この場合、クライアントとなるのブラウザにはルート証明書がインストールされていないため、個別にルート証明書をインストールしなければHTTPSによる通信を行うことができません。
Let's Encryptはそのあたりの問題を解決しており、無料で簡単にサーバ証明書を取得することができます。さらに、以下の通りほとんど主要なブラウザがLet's Encryptに対応しています。
・Microsoft Internet Explorer 6 以上
・Microsoft Edge
・Google Chrome
・Mozilla Firefox 2.0 以上
・Apple Safari 4.0 以上
・Android ブラウザ (Android 2.3.6 以上)
※細かい環境についてはこちらを確認してください。→参考:Let's Encrypt 総合ポータル
サーバ証明書導入時の注意点
Let's Encryptでサーバ証明書を導入した際、いくつか気をつけておきたい点がありました。
Python 2.6以上 もともとサクラVPSでCent OSを構築していましたが、バージョンが5.11でした。。Cent OS 5.11ではPythonのバージョンが通常2.4なので、導入が大変なようです。ということで、今回はCent OS 6.8のサクラVPS環境を別途構築しました。
ドメインが必要 Cent OS 6.8を契約したはいいもの、残念ながらIPアドレスではLet's Encryptによるサーバ証明書の発行はできません。ドメインを取得し、ブラウザからアクセスできるようにしておきましょう。
CertbotクライアントがNginxにはまだ正式に対応していない? SSLの設定は、使用するHTTPサーバによって異なります。そのためCertbotクライアントでは、環境別にプラグインを用いてサーバ証明書の取得とインストールを行うようなのですが、 Nginx用のプラグインが正式にリリースされていないようです(参考:ユーザーガイド - Let's Encrypt 総合ポータル)。
導入に苦労しそうだったので、、、今回はApacheで試してみました。
*発行できるサーバ証明書の数に限りがある
ドメイン当たりの発行数に限りがあるようです。Let's Encryptを試してみたい場合は、テスト用証明書を発行するのが良いでしょう。
※ただし、テスト用のサーバ証明書だと、ブラウザからアクセス時に警告が表示されます。
他にもあるかもしれません。
実際にサーバ証明書を取得してみる
それでは実際にサーバ証明書を取得してみます。
まずはサーバ証明書の取得とインストールを自動で行ってくれるCertbotクライアントをGithubから取得します。
※ここからはサーバ上での作業です。
# git clone https://github.com/certbot/certbot
取得できたら、以下のコマンドを実行します。
# cd certbot # ./certbot-auto run --test-cert
テスト用の証明書を取得するために--test-cert
オプションを付与しています。
実行すると、証明書の取得とインストールを行うための画面が立ち上がります。
順番に進んでいきます。
↑ここでIPアドレスを入力するとエラーになります。ドメイン名が必要です。
↑メールアドレスを入力します。
↑HTTPによるアクセスを許容するか否かを選択します。今回は許容するようにしましたが、本番環境構築時はHTTPSのみがいいでしょう。
↑Congratulations!ということで成功です!
たったこれだけで、自動でssl.conf(Apache使用時のSSlの設定ファイル)の設定まで行われ、指定したドメインでHTTPS通信が行えるようになりました。
ナンテコッタ!