こんにちは、JWordのゲーム開発エンジニア カネテックです。
みなさんWebの情報はSSLで公開していますか?「会社は大丈夫だけど、趣味で持っているサーバはSSLに対応させてないなぁ、高いし」なんて方はいませんか?(ぼくのことです)
今回は、無料で簡単にHTTPS対応できるLet’s Encryptをご紹介いたします。
概要
- 前提
- Certbotを導入
- SSLの設定
- 自動更新の設定
- 二つ目以降のドメインの設定
前提
- OS: Ubuntu 14.04
- HTTPデーモン: Apache(apt-getでインストールしたもの)
- Ubuntu、Apacheはインストールおよび設定済み
- Apacheは立ち上がった状態
- kanetech.ddns.netでhttpアクセスが行える状態
- IPv4 グローバルアドレスを持ち、ufwコマンドでTCP 80/443ポートは解放済み
Certbotを導入
Let’s Encryptでは、Certbotというツールを使った導入、更新を推奨しています(他にも対応ツールはいっぱいあります!)ので
今回はCertbotを使って進めていきます。
まず、公式サイトを開きます。
https://certbot.eff.org/
デーモンの種類とディストリビューションを選択すると導入ガイドが表示されるので、それに従って導入します。
今回はUbuntu14.04上のApacheを選択しました。
なお、処理の途中でroot権限が必要になります。都度パスワードを入力しても良いのですが、最終的に証明書を自動更新する場合は
rootでの更新処理を設定することになりますので、導入からroot環境で実施すると良いでしょう。
1 2 3 4 |
$ sudo su - # cd ~ && mkdir -p bin && cd bin # wget https://dl.eff.org/certbot-auto # chmod a+x certbot-auto |
SSLの設定
certbot-autoコマンドを使って、対話的に設定していきます。
1 |
# ./certbot-auto |
設定したいドメイン名、メールアドレスを記入してライセンスを確認し、同意の場合は次の画面に進みます。
HTTPをどうするか設定します。
Easy: HTTPとHTTPS両方で動作
Secure: HTTPアクセスはHTTPSへリダイレクト
今回はHTTPも残したかったのでEasyを選択しました。
お疲れ様でした。これでSSLでのアクセスが可能です。
最後に、以下のURLで検証するよう勧められるので見てみます。
https://www.ssllabs.com/ssltest/analyze.html?d=kanetech.ddns.net
詳しくない方は、ここで上部に表示されるサマリーがAになっていれば良いと思います。
詳しい方は、下に詳細が記載されています。環境ごとのSNI対応状況などもわかるので、
目を通しておくと良いでしょう。
Let’s Encryptの特徴として有効期限が大変に短く、90日しかありません。
ここで確認する証明書も期限が90日であることがわかると思います。
Let’s Encryptは自動更新が前提ですので、次の章で自動更新の方法について説明します。
自動更新の設定
まずは、証明書を手動で更新してみます。
certbotには更新が正常に走るかテストするドライラン機能があります。まずはこれを使って問題ないか確認しておきましょう。
1 |
# certbot-auto renew --dry-run |
本当に更新する場合は、–dry-runオプションなしで実行します。
1 |
# certbot-auto renew |
期限が30日を切ったもののみが更新されます。毎日実行するとよいでしょう。
また、Apacheの場合は証明書が変更された際に設定の再読み込みが必要になります。
1 |
# certbot-auto renew --post-hook "service httpd reload" |
とすることで、自動的に更新が反映されます。サーバの運用ポリシーを確認した上で設定してください。
これをcrontabに
1 |
0 4 * * * certbot-auto renew --post-hook "service httpd reload" |
といった形で記載しておくとよいでしょう(設定は一例です。運用ポリシーにしたがって設定してください)。
二つ目以降のドメインの設定
複数のドメインをホストしている場合、この後二つ目以降のドメインを追加設定していきます。追加時は、最初の設定コマンドの後ろに-d [ドメイン名]と指定します。
1 |
$ ./certbot-auto -d kanetech2.ddns.net |
更新についてはrenewコマンドで全ての証明書を管理してくれますので、そのままで大丈夫です。
以上です。
いかがでしたでしょうか。
ウィザード実行後、すぐさまHTTPSが機能するというのは感動的ですよね。
一方で、更新処理が正しく動かなくなると、90日以内にサービス障害が発生しますので
サーバの役割に合わせて障害対策を考えてみると良いと思います。