さくらのクラウド ネットワーク入門 10. エンハンスドロードバランサとLet’s EncryptでHTTPS化

公開:最終更新日:

このネットワーク入門の第9回では「エンハンスドロードバランサ」を紹介しました。このアプライアンスは機能も多く、さくらインターネットのサービスやゾーンを超えた負荷分散も実現できますが、第9回では設定してみただけにとどまりました。ドメイン名ではなくIPアドレスでのアクセスで、通信もHTTPなのでブラウザに安全ではないという警告が表示されていたはずです。

本記事では、第9回で作成した2台のWebサーバーを負荷分散する環境に改善を加えていきます。HTTPではなく、TLS(暗号化レイヤー)によって保護されたHTTPSでアクセスできるように設定し、TLS証明書としてLet’s Encryptの自動更新を利用します。また、IPアドレスではなくドメイン名でアクセスできるようにします。

HTTPS対応とLet’s Encrypt

さくらのクラウドの「エンハンスドロードバランサ」はL7のロードバランサーであり、通信プロトコルはWeb(HTTP)に特化しています。そのため、TLSで保護された通信(HTTPS)にも対応しています。本シリーズの第7回で取り上げた「ロードバランサ」はTCPレイヤーで動作するため、HTTPSはそれぞれの実サーバーが対応する必要がありました。一方「エンハンスドロードバランサ」では、HTTPSの負荷を実サーバーからロードバランサー側にオフロードすることが可能です。

通信をHTTPS化するには、信頼できる認証局(CA)からSSL/TLSサーバー証明書を取得することが必要です。例えば、さくらインターネットが提供する「さくらのSSL」でもいくつかのCAが発行する商用の電子証明書を取得でき、これを「エンハンスドロードバランサ」に組み込むこともできます。

👉 SSL証明書ならさくらのSSL|さくらインターネット

インターネット全体のHTTPS化

インターネットでは2010年代にかけて盗聴や改ざんの危険性が高まり、プライバシー保護やセキュリティの観点から、それまで認証やECなど通信の一部でのみ利用されてきたHTTPSをインターネット全体に適用する必要性が広く論じられました。これに応じてさまざまなサービスやWebサイトがHTTPS対応を進めた結果、現在では日本でアクセスされるWebページの90%以上がHTTPS化されています†。

その過程で、誰でもSSL/TLS証明書を無料で取得できるように立ち上げられた非営利の認証局が、Let’s Encryptです。ISRG(インターネットセキュリティ研究グループ)により運営されており、インターネット全体のHTTPS化を促進する目的で活動しています。

👉 無料SSL証明書のLet’s Encryptとは? | さくらのSSL

Let’s Encryptは自動更新が可能

Let’s Encryptの特徴として、一般的な商用の認証局より証明書の有効期間が短いことがあります。そのかわり証明書の取得や更新の複雑な手続きを自動化するACME(Automatic Certificate Management Environment)という標準プロトコル(RFC 8555)が策定され、Let’s Encryptは自動更新を前提に運営されています。

さらに「エンハンスドロードバランサ」ではACMEを用いた電子証明書の自動更新を抽象化し、ユーザーが特別な準備や手続きの必要なくHTTPSによる通信を利用できるようになっています。

👉 Let’s Encrypt証明書自動インストール・更新機能 | エンハンスドロードバランサ

なお、インターネット通信の安全性を高める観点から、電子証明書による通信の安全性や利便性のガイドラインを策定するCA/Bフォーラムでは、電子証明書の有効期間を段階的に短縮することを決議しました。最終的に47日ごとになる再発行を手作業で行うことは困難で、電子証明書の自動更新は今後避けられない機能となります。

👉 SSL/TLS証明書の有効期間短縮に伴う弊社対応について | さくらインターネット

準備. Webサーバーにドメイン名を割り当てる

Let’s Encryptではドメイン証明書(Domain Validation)を発行することもあり、HTTPS化を設定する前に、Webサーバーのドメイン名をIPアドレスに紐付ける必要があります。

第9回で設定した負荷分散環境をそのまま使用するなら、次の図にあるように「エンハンスドLB」の「情報」タブで確認できる「VIP」が、接続するWebクラスタのIPアドレスとなります。

このIPアドレスに対して、DNSサーバーでドメイン名(Aレコード)を割り当てます。今回は筆者のドメインを使用しますが、読者の皆さんはそれぞれ自身の所有するドメインに置き換えて読み進めてください。

項目
ドメイン名web.harunobukameda.com
IPアドレス153.125.168.194

下記の画面では筆者がドメインを取得したCloudflareのDNSサーバーで設定しています。

なお第8回で紹介したように、さくらのクラウドのDNSアプライアンスを利用し、委任されたサブドメインからホスト名を割り当てることもできます。

1. ロードバランサーがHTTPSで待ち受ける設定

続けてHTTPS化を設定していきます。さくらのクラウドのコントロールパネルの「エンハンスドLB」で「待ち受けポート」タブを開きます。第9回の状態であれば次のように設定されています。

このHTTPポートはACMEで使用するのでこのままにしておき、新たに右側の「+追加」をクリックしてHTTPSの待ち受けポートを追加します。次のように「プロキシ方式」で「https」を選択します。HTTP/2は「有効」でよいでしょう。

「SSLポリシー」として選択できる暗号化スイートには4つあり、マニュアルの次のページで詳しく説明されています。ここではポート番号と同様にデフォルトのままとします。

👉 https通信時のSSLポリシーについて | エンハンスドロードバランサ

設定すると次のように「https」と「http」が並んだ状態になります。

忘れないように右上の「反映」をクリックします。

2. Let’s Encryptで証明書を自動発行させる設定

ポートを443にしただけではHTTPSにはなりません。前述したようにSSL/TLS証明書を取得する必要があります。ここでは先ほど紹介したLet’s Encryptを利用するため、右上にある「SSL証明書の設定」メニューから「Let’s Encryptの設定」を選択します(任意の認証局で取得した証明書を使うときには、同じメニューの「追加/変更」を選択します)。

Let’s Encryptを設定する「SSL証明書の自動発行」画面が開きます。証明書を発行する対象のドメイン名を「SSL証明書のCommon Name」に指定します。

設定できたなら、また忘れないよう右上の「反映」をクリックします。

なお、ここで「サブジェクト代替名」を用いることでSNI(Server Name Indication)により、1つのIPアドレスで複数のSSL/TLS証明書(ドメイン)を設定できます。

電子証明書をすぐに発行させてみよう

ここまでの設定が完了すれば、毎日14時30分頃に電子証明書が発行されます。ただし「SSL証明書の設定」メニューから「Let’s Encryptの更新書更新」を選択すると、更新処理が即時に行われます。

初回はこのメニューで証明書を発行させるとよいでしょう。しばらく待っていると以下のようなメールが届き、SSL/TLS証明書が設定されたことがわかります。

先ほども説明したように「エンハンスドロードバランサ」では証明書の取得が抽象化されているため、ユーザーが証明書そのものを確認したり配置したりする必要はありません。これでHTTPS化は完了しています。

ドメイン名+HTTPSでアクセスしてみよう

実際に設定したドメインを使ってHTTPSでアクセスしてみましょう。

このように表示されれば成功です。ここでは「エンハンスドロードバランサ」がHTTPS通信を終端し、配下のサーバーAに通信を振り分けたことが分かります。

関連リンク

本記事は、エンハンスドロードバランサのマニュアルで以下を参照しています。

また、さくらインターネットが提供するSSL/TSL証明書サービスに関連して以下の情報を参照します。

† Let’s Encryptが公開している統計情報などを参照してください。

亀田治伸
制作者

クラウド事業本部

亀田治伸

兵庫県伊丹市出身、米国州立南イリノイ大学卒業。認証系独立ASP、 動画・音楽配信システム構築、決済代行事業者、外資クラウドエバンジェリスト数社を経て現職。得意領域は、認証、暗号、ネットワークを中心としたセキュリティ、 映像配信、開発手法に見る組織論、クラウドアーキテクチャ、プレゼンテーション。