本日は、OpenResty Edge で Let’s Encrypt を使用して無料の SSL 証明書を自動的に発行する方法をご紹介いたします。

埋め込み画像

アプリケーションにワイルドカードドメインを追加する

いつものように、OpenResty Edge の Admin Web コンソールにアクセスしましょう。これは私たちのコンソールのサンプルデプロイメントです。各ユーザーは独自のローカルデプロイメントを持っています。

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

スクリーンショット

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

屏幕截图

このアプリケーションに入ります。

スクリーンショット

ここでは、サブドメインを使用してデモを行いたいので、まずアプリケーションの設定を調整する必要があります。

スクリーンショット

このアプリケーションに新しいワイルドカードドメインを追加しましょう。

スクリーンショット

スクリーンショット

保存します。

スクリーンショット

次に、ゲートウェイサーバーにプッシュします。Let’s Encrypt サーバーがドメインの所有権を確認する必要があるためです。

スクリーンショット

変更をリリースします。

スクリーンショット

リリースします!

スクリーンショット

SSL 証明書を追加する

SSL ページに移動します。

スクリーンショット

現時点では SSL 証明書が定義されていないことがわかります。

スクリーンショット

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

スクリーンショット

新しい SSL 証明書を発行するためのさまざまな方法をサポートしています。

スクリーンショット

ここでは Let’s Encrypt の方法のみをデモンストレーションします。

スクリーンショット

トップレベルドメイン test-edge.com をこの証明書に追加します。

スクリーンショット

さらにサブドメイン名を追加します。

スクリーンショット

api サブドメインを入力します。これは何でも構いません。

スクリーンショット

さらにサブドメインを追加することもできます。

スクリーンショット

多数のドメインがある場合は、一括入力モードを使用することもできます。

屏幕截图

ここで必要なドメイン名を 1 行ずつ入力できます。

スクリーンショット

一括入力モードを終了します。

スクリーンショット

ここにあるすべてのドメインは、この OpenResty Edge デプロイメントのゲートウェイサーバーに解決される必要があります。

スクリーンショット

この要件についてもここで言及されています。

屏幕截图

ターミナルでは、dig コマンドを使用してドメインがゲートウェイサーバーに解決されているかどうかをテストできます。

dig test-edge.com

有効な DNS 応答が表示されます。

スクリーンショット 1

api サブドメインもテストできます。

dig api.test-edge.com

同様に有効な DNS 応答が得られます。

スクリーンショット 3

Let’s Encrypt サーバーは、これらのドメインを通じてゲートウェイサーバーにアクセスする必要があります。これは、私たちが実際にこれらのドメインを所有していることを確認する必要があるためです。

埋め込み画像

ワイルドカードドメインの場合、OpenResty Edge をドメインの権威 DNS ネームサーバーとして使用する必要もあります。

埋め込み画像

Let’s Encrypt 加入者同意書に同意します。

スクリーンショット

保存します。

スクリーンショット

新しい Let’s Encrypt 証明書が表示されます。

スクリーンショット

証明書の発行元は Let’s Encrypt です。

屏幕截图

予想通り、2 つのドメインがあります。

スクリーンショット

ここでリアルタイムのステータスを確認できます。

スクリーンショット

このステータスアイコンをクリックして詳細な進捗状況を確認します。

Let’s Encrypt 証明書の発行プロセスに関する詳細なログもここで確認できます。

スクリーンショット

証明書が発行されたことが確認できます。

スクリーンショット

このステータスページを終了しましょう。

スクリーンショット

この列で新しい証明書の有効期限を確認できます。

スクリーンショット

この証明書は 3 ヶ月後に期限切れになります。

屏幕截图

OpenResty Edge は、将来証明書の期限が近づいたときに自動的に更新します。

スクリーンショット

次回の更新が 2 ヶ月後に予定されていることがわかります。つまり、期限切れの 1 ヶ月前です。

スクリーンショット

既存の Let’s Encrypt 証明書も編集可能です。

スクリーンショット

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

スクリーンショット

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

スクリーンショット

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

スクリーンショット

ただし、削除せずに無効にすることはできます。

スクリーンショット

その後、再び有効にすることもできます。

スクリーンショット

新しい証明書をプッシュするために、いつものように新しいバージョンをリリースする必要があります。

屏幕截图

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

スクリーンショット

リリースします!

スクリーンショット

これで完了です!

スクリーンショット

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

スクリーンショット

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

埋め込み画像

その後、OpenResty Edge は、これらの証明書が期限切れになる前に Let’s Encrypt からの証明書を自動的に再度更新します。

埋め込み画像

何らかの理由で一部の証明書が更新されなかった場合、ユーザーはこのようなグローバル通知を受け取ります。

埋め込み画像

テスト

新しいブラウザタブを開き、https を使用して test-edge.com ウェブサイトにアクセスしてみましょう。

屏幕截图

成功しました!

api サブドメインもテストしてみます。

スクリーンショット

これも機能しています!

ターミナルで、ゲートウェイクラスターサーバーを使用して新しい証明書をテストすることもできます。

スクリーンショット

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

スクリーンショット

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

屏幕截图

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

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

屏幕截图 3

成功しました!

-v オプションを使用して、より詳細な情報を取得することもできます。

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

このコマンドを実行します。

屏幕截图 4

ここで実際にサーバー証明書を確認できます。また、この証明書が確かに Let’s Encrypt によって発行されたものであることも確認できます。

截图 4

著者について

章亦春(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 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

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