Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Automatic HTTPS on Kestrel in 2026, now that LettuceEncrypt is archived

2026年08月22日に「Dev.to」が公開したITニュース「Automatic HTTPS on Kestrel in 2026, now that LettuceEncrypt is archived」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Kestrelで動かすASP.NET CoreアプリのHTTPS設定で課題だった、従来の自動証明書取得ツールLettuceEncryptが開発終了。証明書有効期間の短縮化に伴い、頻繁な自動更新が必須となった。これに対応するため、RFC 9773に基づき、証明書を自動で取得・更新する新ライブラリ「AutoHttps」が登場。KestrelがTLSを終端する場合に役立つ。

ITニュース解説

システムエンジニアを目指す初心者がWebアプリケーションを開発する際、避けて通れないのがセキュリティ対策の一つ、HTTPSの導入だ。WebサイトのURLが「http://」ではなく「https://」から始まることで、ユーザーとサーバー間の通信が暗号化され、安全に情報がやり取りできるようになる。特に、ASP.NET Coreアプリケーションを「Kestrel」というWebサーバーで直接運用する場合、このHTTPSの設定、具体的にはTLS証明書というデジタルな身分証明書の取得と更新が、これまで少し複雑な課題だった。

KestrelはASP.NET Coreの標準的なWebサーバーであり、通常はNginxやIISのような別のWebサーバーや、クラウドのロードバランサーと組み合わせて使われることが多い。しかし、これらの外部の仕組みを介さずに、Kestrel単独でインターネットに公開する場合、TLS証明書をどうやって取得し、期限が切れる前にどう更新し続けるかという問題に直面する。これまでは「LettuceEncrypt」というツールが広く使われていた。これは、無料で証明書を発行してくれる「Let's Encrypt」というサービスを利用し、アプリケーション内部で証明書を自動的に取得・更新してくれる便利なツールだった。しかし、このLettuceEncryptは2025年4月に開発が終了(アーカイブ)され、最新の.NETバージョンには対応していないため、もはや新しい解決策が必要とされている。

この証明書管理の状況が変わってきた背景には、主に二つの大きな変化がある。一つは「証明書の有効期間が短くなっている」ことだ。Let's Encryptは今年から6日間の有効期間を持つ証明書の発行を始め、一般的な証明書のデフォルト有効期間も90日から45日に短縮する動きを見せている。これは、万が一証明書の秘密鍵が漏洩した場合でも、その鍵が悪用される期間を短くすることでセキュリティを向上させることが目的だ。しかし、この変更は開発者にとって大きな影響を与える。有効期間が短くなればなるほど、手動での更新は現実的ではなくなる。例えば、数ヶ月に一度の手動更新や、決まったスケジュールで動くプログラムによる更新では、この短いサイクルには追いつかない。そのため、証明書の更新は自動で、かつ頻繁に行われる仕組みが不可欠となる。

もう一つの変化は「証明書の更新タイミングが明確になった」ことだ。これまで、証明書を更新するタイミングは、例えば「有効期限が残り30日になったら更新する」といったように、開発者やツールが任意で決めることが多かった。しかし、2025年9月に発行されたRFC 9773という新しい技術仕様「ACME Renewal Information」により、証明書を発行する認証局(CA)が、クライアント側(アプリケーション側)に推奨される更新期間を直接通知するようになった。これにより、クライアントはCAの指示に従って更新を行うことができる。これは、証明書発行局にとってもメリットがあり、すべての利用者が一斉に更新をリクエストするのではなく、負荷を分散させながら効率的に更新処理を行うことが可能になる。

これらの変化を踏まえると、.NETアプリケーションが必要とするのは、アプリケーションのプロセス内部で動作し、証明書の取得・更新に必要な認証チャレンジ(「ACMEチャレンジ」と呼ばれる、ドメインの所有権を確認するプロセス)に自らのリクエスト処理の中で応答し、さらにアプリケーションの再起動なしに、CAの指定するスケジュールで証明書を更新し続けられるクライアントツールだ。旧来のLettuceEncryptはこの最初の二つの要件は満たしていたが、新しいRFC 9773には対応しておらず、もはやメンテナンスされていない。同様の状況にあるツールとして「FluffySpoon's EncryptWeMust」も挙げられる。

このような背景から、今回紹介されているのが「AutoHttps」という新しいライブラリだ。これは、筆者自身が開発したオープンソースのツールであり、まさに上記の要件を満たすものとして登場した。AutoHttpsをアプリケーションに組み込む方法は非常にシンプルで、ASP.NET Coreの起動時に数行のコードを追加するだけでよい。具体的には、builder.Services.AddAutoHttpsというメソッドを呼び出し、オプションとして証明書を取得したいドメイン名、管理者のメールアドレス、そして利用規約への同意を設定する。これにより、アプリケーションが最初に起動した際に証明書を自動で取得し、その後はCAの推奨するタイミングに従って、期限切れ前に自動的に更新を続けてくれる。

AutoHttpsは、Webサーバーが特定のリクエストに応答することでドメイン所有権を証明する「http-01チャレンジ」にアプリケーションのリクエストパイプライン内で対応できる。また、DNSサーバーの情報を変更することで所有権を証明する「dns-01チャレンジ」や、サブドメイン全てに有効な「ワイルドカード証明書」の取得にも対応している。Let's Encryptだけでなく、RFC 8555に準拠した任意のACME認証局と連携可能だ。さらに、このライブラリ自体には追加のNuGetパッケージへの依存関係がなく、標準の共有フレームワーク上で動作するように設計されているため、非常に軽量で扱いやすい。前述のような有効期間の短い証明書にも対応するためのプロファイルが用意されており、オプションで選択することで、短期間で頻繁に更新される証明書にも対応できる。

ただし、AutoHttpsを利用する上での重要な注意点がある。このツールは、Kestrelが直接HTTPS通信を終端する場合にのみ機能する。つまり、外部からのHTTPSリクエストをKestrelが直接受け取り、証明書の検証や暗号化・復号化の処理を行う「エッジ」に位置する場合に限られる。もし、アプリケーションの前にNginxやIIS、あるいはクラウドサービスのロードバランサーが配置され、それらがHTTPSの処理(証明書の保持や暗号化)を行っている場合、その前段のコンポーネントで証明書を管理する必要がある。このような環境では、AutoHttpsのようなアプリケーション内部で動作するクライアントは役に立たない。

旧来のLettuceEncryptを使っていた開発者にとっては、AutoHttpsへの移行は比較的スムーズに行えるように設計されている。APIの名称や設定項目が似ており、「DomainNames」「EmailAddress」「AcceptTermsOfService」といった主要な設定はそのまま使える。設定セクションの名前を変更し、LettuceEncryptの呼び出しを削除するだけで、多くの部分が移行可能だ。具体的な移行手順はAutoHttpsのリポジトリに詳細なガイドが提供されている。

このように、HTTPS証明書の管理は、セキュリティ強化と技術標準の進化により、より自動化され、効率的な運用が求められる時代になっている。Kestrelを単独で利用する開発者にとって、AutoHttpsは、これまで手動で行うか、複雑な設定を必要とした証明書の取得と更新を、簡単かつ自動的に行うための強力な解決策となるだろう。

関連コンテンツ

関連ITニュース