[Rancher実践] Rancherで本番運用するには②

今回はRancherを本番運用で利用するにあたって必ず押さえておきたい、SSL/TLS証明書の扱いについてご紹介したいと思います。

ウェブを「よりセキュアに」という風潮

近年はHTTPSでウェブサービスを提供することが当たり前になってきました。それはブラウザでの閲覧だけでなく、スマートフォンアプリ内からWebAPIを使用する際も、HTTPSではないサービスに対してそのままの設定では通信すらできなくなってきています。

証明書発行に関する事情

一方でSSL/TLS証明書の発行には、1ドメインあたり最低でも年間1000円程度の費用がかかります。サービス提供者にSSL/TLS証明書を利用することが望まれる中、これらを発行するための環境はどのように変化してきているでしょうか。

  • AWSではAWS Certificate Managerというサービスで証明書を発行・管理することができるようになりました。
  • Let’s Encryptという、”すべてのWorldWideWebにTLS接続ができるようにすること”を目的としたプロジェクトが2016年4月12日に正式にサービスインしました。

上記は共に無料でSSL/TLS証明書が発行できます。これらのサービスによりTLS接続の敷居は格段に低くなったと言えます。

証明書発行の自動化と制限

それでは、従来費用がかかっていたものがなぜ無料で利用できるようになったのでしょうか。それは証明書の発行作業を自動化するため、ACMEプロトコルという形で手続きが整理されたことが大きな理由として挙げられます。

ただし、このような無料証明書発行の仕組みには従来になかった制限が含まれます。

  • AWS Certificate Managerで作成した証明書はElastic Load BalancingおよびAmazon CloudFront以外のサービスで利用することはできない。
  • Let’s Encryptで作成した証明書の有効期限は90日と短い。(従来は1年での運用が主)
  • Let’s Encryptはワイルドカード証明書の発行をサポートしていない。
  • 証明書取得のAPIにRateLimitsがある。
  • 証明書の種類はDVのみ対応。(DV[Domain Validation] => ドメインの所有を確認して発行)

一見制限が多いように見えるLet’s Encryptですが、Rancherに備わっている証明書の管理機構と組み合わせることで、非常に強力な仕組みに一変します。

Rancher環境で証明書の発行&更新を自動化

それでは実際にRancherでどのように設定していくのか見ていきましょう。

1. 証明書発行をサポートするカスタムカタログを追加する

RancherのコミュニティカタログにLet’s Encrypt Certificate Managerというカタログがエントリーされていますが、今回はこちらは使いません。

Rancherロードバランサで簡単に使える&自動更新ができるようにしたいため、Rancher Let’s Encrypt Serviceを利用します。こちらはカタログ一覧には出てこないので、Rancherの[管理者]->[設定]からカスタムカタログとして登録します。

2. ドメインを指定してスタックを起動する

カスタムカタログとして登録できたら、HTTPS通信を行いたいドメインを指定してスタックを立ち上げます。

補足1: 複数のドメインを指定する際は、カンマの後にスペースを入れないように注意してください。怪しい動きをします。

補足2: カタログの初期設定ではSTAGING=trueとなっています。本番運用の際はSTAGING=falseに変更してください。

3. RancherロードバランサにACME challenge用のエンドポイントを用意する

証明書取得用のスタックができたら、RancherロードバランサにACME challenge用のエンドポイントを用意します。エンドポイントはドメインごとに設定します。

“リクエストホスト”がドメインで、”対象”が先ほど立ち上げたスタックのnginxサービスです。パスには/.well-known/を埋めます。 このようにLet’s EncryptからのACME challenge受けつけることで、証明書が手に入ります。

補足: パブリックなRancherロードバランサは専用のスタックを用意することをお勧めします。のちの回でBlue/Greenデプロイについてもご紹介したいと思います。

4. 証明書が取得できたことを確認する

無事ACME challengeが成功したら、Rancher Let’s Encrypt ServiceがRancher Serverに証明書を登録してくれます。証明書がドメイン単位で作成されており、有効期限が3ヶ月(90日)であることがわかります。

5. Rancherロードバランサに証明書を設定する

証明書が取得できたことを確認したら、Rancherロードバランサに証明書を設定します。メインを証明書を選択し、代替証明書を必要に応じて追加します。設定ができたらロードバランサをアップグレードします。

6. 証明書の更新タイミングを確認する

最後に更新タイミングを確認しておきます。初期設定では有効期限が切れる14日前に更新してくれるようです。これで短い証明書の有効期限でも自動で更新し続けてくれるので安心です。

まとめ

このようにRancherとLet’s Encryptを組み合わせることで、セキュアな本番環境を手軽に構築することができました。従来の自動化されていない方法でこれらを設定した場合、待ち時間なども含め最低でも1日以上(決済や更新手続きを考えるともっと)を要すると思います。本番環境は重厚な構成になりがちですが、このような自動化を積極的に取り入れて運用の効率化を目指すことが重要ではないでしょうか。

次回はBlue/Greenデプロイの基本構成についてご紹介したいと思います。

APN Consulting Partner
スーパーソフトウエアはAWSパートナーネットワーク(APN)のコンサルティングパートナーです。