OpenResty Edge で SSL 証明書をアップロードするには、Admin Web コンソールでアプリケーションの SSL ページを開き、PEM 形式の秘密鍵と証明書を貼り付けるかアップロードして保存し、新しくリリースするだけです。証明書はサーバーのリロード、再起動、バイナリのアップグレードなしに、すべてのゲートウェイサーバーへ届きます。

以下では、サンプルアプリケーション test-edge.com で手動アップロードの手順を一通り確認し、その後 curl --resolve で実際に配信されている証明書を検証します。

Edge コンソールで SSL 証明書と秘密鍵をアップロードする

OpenResty Edge 管理コンソールの SSL 証明書アップロードページ

いつものように、OpenResty Edge の Admin Web コンソールにアクセスしましょう。これは当社のコンソールのサンプルデプロイメントです。各ユーザーには独自のローカルデプロイメントがあります。

今回も、test-edge.com ドメインのアプリケーションを例として使用します。

OpenResty Edge のアプリケーション一覧を test-edge.com ドメインで絞り込んだ状態

SSL 用に 443 ポートでリッスンしていることがわかります。

test-edge.com アプリケーションが HTTP 80 番ポートと HTTPS 443 番ポートでリッスンしている様子

このアプリケーションに移動しましょう。

OpenResty Edge コンソールで test-edge.com アプリケーションを開く

SSL ページに移動します。

OpenResty Edge アプリケーションのサイドバーにある SSL ページの項目

現時点では SSL 証明書が追加されていません。

test-edge.com アプリケーションにまだ SSL 証明書がない状態

新しい証明書を追加しましょう。

SSL ページの証明書追加ボタン

Let’s Encrypt や、ACME プロトコルによる SSL 証明書の自動化を含め、新しい SSL 証明書を追加するさまざまな方法をサポートしています。

Let’s Encrypt や手動アップロードを含む OpenResty Edge の SSL 証明書追加方法

ここでは手動アップロードの方法のみを説明します。

OpenResty Edge の SSL 証明書 手動アップロードフォーム

ここで PEM 形式の SSL 秘密鍵をコピーして貼り付けることができます。

PEM 形式の SSL 秘密鍵をアップロードフォームに貼り付ける

また、ローカルファイルシステムを直接参照して、ローカルファイルを選択してアップロードすることもできます。

ローカルファイルシステムから SSL 秘密鍵ファイルをアップロードする

同時に、対応する PEM 形式の SSL 証明書を貼り付けます。

PEM 形式の SSL 証明書をアップロードフォームに貼り付ける

同様に、ローカル証明書ファイルを直接参照してアップロードすることもできます。

ローカルファイルシステムから SSL 証明書ファイルをアップロードする

場合によっては、CA が中間信頼 CA 証明書チェーンを含む別のファイルを提供することがあります。

中間信頼 CA 証明書チェーンの入力欄

しかし、多くの場合、証明書チェーンはここのサーバー証明書ファイルに含まれています。

通常は証明書チェーンが既に含まれているサーバー証明書の入力欄

この例では、別のファイルがないため、空のままにしておきます。

中間 CA 証明書チェーンの入力欄を空欄のままにする

証明書と秘密鍵のペアを保存します。

アップロードした SSL 証明書と秘密鍵のペアを保存する

新しく作成された証明書とペアの鍵の記録が表示されます。

SSL ページに表示された新しい SSL 証明書と鍵ペアのレコード

証明書のソースは手動アップロードです。

証明書の発行元が手動アップロードと表示されている

証明書は test-edge.com という単一のドメインに対応しています。

test-edge.com という単一ドメインに対応するアップロード済み証明書

約 1 年後に有効期限が切れます。

SSL 証明書の有効期限が約 1 年後と表示されている

マウスをホバーすると、正確な有効期限を確認できます。

マウスホバーで表示される SSL 証明書の正確な有効期限

既存の証明書は編集可能です。

OpenResty Edge で既存の SSL 証明書を編集する

ここでは変更を加えません。

変更を加えずに SSL 証明書の編集フォームを閉じる

この証明書は削除することもできます。

OpenResty Edge における SSL 証明書の削除操作

今はまだ削除したくありません。

SSL 証明書の削除をキャンセルする

しかし、無効にすることはできます。

SSL 証明書を削除せずに無効化する

サーバーのリロードや再起動なしで新しい証明書を配信する

証明書は保存されましたが、まだ有効にはなっていません。OpenResty Edge の他のすべての設定変更と同様に、リリースを行うことで反映されます。

いつものように、新しい証明書をプッシュするには新しい設定をリリースする必要があります。

SSL 証明書をゲートウェイへ配信するにはリリースが必要

このボタンをクリックします。

OpenResty Edge 管理コンソールのリリースボタン

リリースします!

アップロードした SSL 証明書のリリースを確定する

完了しました!

新しい SSL 証明書のリリースが正常に完了した状態

これで、新しい証明書がすべてのゲートウェイクラスターとサーバーにプッシュされました。

新しい SSL 証明書がすべてのゲートウェイクラスターとサーバーへ配信された状態

設定の変更にはサーバーのリロード、再起動、またはバイナリのアップグレードが不要です。そのため、非常に効率的でスケーラブルです。

OpenResty Edge がサーバーのリロードや再起動なしに設定変更をゲートウェイへ同期する仕組みの図

curl –resolve でアップロードした証明書をテストする

次に、ゲートウェイクラスターサーバーを使用して新しい証明書をテストできます。

新しい証明書のテストに使うゲートウェイクラスターのサーバー一覧

サンフランシスコ近くのゲートウェイサーバーを選択します。

証明書のテスト用に選んだサンフランシスコ近郊のゲートウェイサーバー

133 で終わるパブリック IP アドレスをコピーします。

133 で終わるゲートウェイサーバーのパブリック IP アドレスをコピーする

ターミナルで、このゲートウェイサーバーに HTTPS リクエストを送信できます。

curl -I --resolve 'test-edge.com:443:138.68.231.133' https://test-edge.com/

--resolve オプションは、このリクエストに限って test-edge.com というホスト名を指定したゲートウェイの IP に固定します。そのため、リクエスト自体は実際のホスト名を保ったまま、どのゲートウェイサーバーが応答するかを自分で選べます。

curl –resolve でゲートウェイサーバーに HTTPS リクエストを送信した出力

成功しました!

-v オプションを使用して、証明書情報などの詳細を確認することもできます。

curl -I --resolve 'test-edge.com:443:138.68.231.133' https://test-edge.com/ -v 2>&1 | less -n

ここで、サーバー証明書を確認できます。

curl -v の出力に表示された、test-edge.com 用にアップロードされたサーバー証明書

他のゲートウェイサーバーに対しても同じコマンドを繰り返せば、すべてのサーバーが新しい証明書を配信していることを確認できます。

SSL 証明書のアップロードは、OpenResty Edge の Python SDK を使用して自動化することもできます。これについては別の動画でデモンストレーションします。

SSL 証明書のアップロードを自動化する OpenResty Edge の Python SDK

証明書が有効になったら、すべての HTTP リクエストを HTTPS へリダイレクトして、訪問者が常に証明書を利用するようにするとよいでしょう。

よくある質問

OpenResty Edge で SSL 証明書を更新した後、nginx のリロードや再起動は必要ですか?

必要ありません。OpenResty Edge では、Admin コンソールで証明書をアップロードしてリリースを行うと、変更がすべてのゲートウェイクラスターとサーバーへ配信されます。証明書を含む設定変更に、サーバーのリロード、再起動、バイナリのアップグレードは一切不要です。

特定のゲートウェイサーバーだけで新しい SSL 証明書をテストするには?

curl--resolve オプションを使います。例えば curl -I --resolve 'test-edge.com:443:138.68.231.133' https://test-edge.com/ のようにします。このリクエストに限ってホスト名をそのゲートウェイのパブリック IP に固定するため、リクエストは実際のホスト名を保ったまま、どのゲートウェイが応答するかを指定できます。-v を付ければ証明書の詳細も確認できます。

中間 CA 証明書チェーンは別途アップロードする必要がありますか?

別途アップロードが必要かどうかは、サーバー証明書ファイルに完全な中間証明書チェーンが含まれているかどうかによります。含まれている場合はチェーンの欄を空欄のままにできます。サーバー証明書のみが含まれている場合は、専用の入力欄で中間証明書チェーンを補う必要があります。そうしないと、一部のクライアントが HTTPS 接続を確立できない可能性があります。

Web コンソールを使わずに SSL 証明書をアップロードできますか?

できます。証明書のアップロードは OpenResty Edge の Python SDK で自動化できます。証明書ファイルを一切扱いたくない場合は、Let’s EncryptACME プロトコルによる発行・更新を Edge に任せることもできます。

証明書を削除せずに停止することはできますか?

できます。各証明書のレコードは編集・削除できるほか、無効化するだけにもできます。証明書と鍵のペアを残したまま、その証明書を使わない状態にできます。

著者について

章亦春(Zhang Yichun)は、オープンソースの OpenResty® プロジェクトの創始者であり、OpenResty Inc. の CEO および創業者です。

章亦春(GitHub ID: agentzh)は中国江蘇省生まれで、現在は米国ベイエリアに在住しております。彼は中国における初期のオープンソース技術と文化の提唱者およびリーダーの一人であり、Cloudflare、Yahoo!、Alibaba など、国際的に有名なハイテク企業に勤務した経験があります。「エッジコンピューティング」、「動的トレーシング」、「機械プログラミング」 の先駆者であり、22 年以上のプログラミング経験と 16 年以上のオープンソース経験を持っております。世界中で 4000 万以上のドメイン名を持つユーザーを抱えるオープンソースプロジェクトのリーダーとして、彼は OpenResty® オープンソースプロジェクトをベースに、米国シリコンバレーの中心部にハイテク企業 OpenResty Inc. を設立いたしました。同社の主力製品である OpenResty XRay動的トレーシング技術を利用した非侵襲的な障害分析および排除ツール)と OpenResty Edge(マイクロサービスおよび分散トラフィックに最適化された多機能ゲートウェイソフトウェア)は、世界中の多くの上場企業および大企業から高い評価を得ております。OpenResty 以外にも、章亦春は Linux カーネル、Nginx、LuaJITGDBSystemTapLLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!