OpenResty Edge での HTTPS ウェブサイト用 SSL 証明書のアップロード
OpenResty Edge で SSL 証明書をアップロードするには、Admin Web コンソールでアプリケーションの SSL ページを開き、PEM 形式の秘密鍵と証明書を貼り付けるかアップロードして保存し、新しくリリースするだけです。証明書はサーバーのリロード、再起動、バイナリのアップグレードなしに、すべてのゲートウェイサーバーへ届きます。
以下では、サンプルアプリケーション test-edge.com で手動アップロードの手順を一通り確認し、その後 curl --resolve で実際に配信されている証明書を検証します。
Edge コンソールで SSL 証明書と秘密鍵をアップロードする
いつものように、OpenResty Edge の Admin Web コンソールにアクセスしましょう。これは当社のコンソールのサンプルデプロイメントです。各ユーザーには独自のローカルデプロイメントがあります。
今回も、test-edge.com ドメインのアプリケーションを例として使用します。
SSL 用に 443 ポートでリッスンしていることがわかります。
このアプリケーションに移動しましょう。
SSL ページに移動します。
現時点では SSL 証明書が追加されていません。
新しい証明書を追加しましょう。
Let’s Encrypt や、ACME プロトコルによる SSL 証明書の自動化を含め、新しい SSL 証明書を追加するさまざまな方法をサポートしています。
ここでは手動アップロードの方法のみを説明します。
ここで PEM 形式の SSL 秘密鍵をコピーして貼り付けることができます。
また、ローカルファイルシステムを直接参照して、ローカルファイルを選択してアップロードすることもできます。
同時に、対応する PEM 形式の SSL 証明書を貼り付けます。
同様に、ローカル証明書ファイルを直接参照してアップロードすることもできます。
場合によっては、CA が中間信頼 CA 証明書チェーンを含む別のファイルを提供することがあります。
しかし、多くの場合、証明書チェーンはここのサーバー証明書ファイルに含まれています。
この例では、別のファイルがないため、空のままにしておきます。
証明書と秘密鍵のペアを保存します。
新しく作成された証明書とペアの鍵の記録が表示されます。
証明書のソースは手動アップロードです。
証明書は test-edge.com という単一のドメインに対応しています。
約 1 年後に有効期限が切れます。
マウスをホバーすると、正確な有効期限を確認できます。
既存の証明書は編集可能です。
ここでは変更を加えません。
この証明書は削除することもできます。
今はまだ削除したくありません。
しかし、無効にすることはできます。
サーバーのリロードや再起動なしで新しい証明書を配信する
証明書は保存されましたが、まだ有効にはなっていません。OpenResty Edge の他のすべての設定変更と同様に、リリースを行うことで反映されます。
いつものように、新しい証明書をプッシュするには新しい設定をリリースする必要があります。
このボタンをクリックします。
リリースします!
完了しました!
これで、新しい証明書がすべてのゲートウェイクラスターとサーバーにプッシュされました。
設定の変更にはサーバーのリロード、再起動、またはバイナリのアップグレードが不要です。そのため、非常に効率的でスケーラブルです。
curl –resolve でアップロードした証明書をテストする
次に、ゲートウェイクラスターサーバーを使用して新しい証明書をテストできます。
サンフランシスコ近くのゲートウェイサーバーを選択します。
133 で終わるパブリック IP アドレスをコピーします。
ターミナルで、このゲートウェイサーバーに HTTPS リクエストを送信できます。
curl -I --resolve 'test-edge.com:443:138.68.231.133' https://test-edge.com/
--resolve オプションは、このリクエストに限って test-edge.com というホスト名を指定したゲートウェイの IP に固定します。そのため、リクエスト自体は実際のホスト名を保ったまま、どのゲートウェイサーバーが応答するかを自分で選べます。
成功しました!
-v オプションを使用して、証明書情報などの詳細を確認することもできます。
curl -I --resolve 'test-edge.com:443:138.68.231.133' https://test-edge.com/ -v 2>&1 | less -n
ここで、サーバー証明書を確認できます。
他のゲートウェイサーバーに対しても同じコマンドを繰り返せば、すべてのサーバーが新しい証明書を配信していることを確認できます。
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 Encrypt や ACME プロトコルによる発行・更新を 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、LuaJIT、GDB、SystemTap、LLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。
翻訳
英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!

























































