<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Let&#8217;s Encrypt | 徒然なるままに</title>
	<atom:link href="https://www.seichan.org/tag/lets-encrypt/feed" rel="self" type="application/rss+xml" />
	<link>https://www.seichan.org</link>
	<description>徒然と日々の出来事(ネタ)を書いていこうかと．主に FreeBSD，Unix系の話題が中心ですが，その他の話題もあつかってみたり．</description>
	<lastBuildDate>Fri, 09 Oct 2026 21:55:39 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>
	<item>
		<title>【証明書入門 第8回】ライフサイクルと自動化 ― 期限切れ事故・棚卸し・ACME・ARI・期限の監視</title>
		<link>https://www.seichan.org/2026/10/cert-08-lifecycle.html</link>
					<comments>https://www.seichan.org/2026/10/cert-08-lifecycle.html#respond</comments>
		
		<dc:creator><![CDATA[seichan]]></dc:creator>
		<pubDate>Fri, 09 Oct 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[証明書・PKI]]></category>
		<category><![CDATA[ACME]]></category>
		<category><![CDATA[certbot]]></category>
		<category><![CDATA[Let's Encrypt]]></category>
		<category><![CDATA[期限切れ]]></category>
		<category><![CDATA[自動更新]]></category>
		<category><![CDATA[証明書]]></category>
		<category><![CDATA[証明書管理]]></category>
		<guid isPermaLink="false">https://www.seichan.org/blog/?p=6788</guid>

					<description><![CDATA[証明書の期限切れを防ぐための運用を解説します。期限切れ事故の実例、有効期間の短縮で手作業の更新が破綻する理由、CT・スキャン・台帳による棚卸し、ACMEの流れとチャレンジの選び方、Let's Encryptの現在、ACMEクライアント、ARI、社内でのACME、期限の監視、鍵のローテーション、自動化できない機器の扱いまで。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「証明書の期限、Let&#8217;s Encryptからメールが来るから大丈夫です」<br>「更新は年に1回だし、手順書どおりにやれば問題ありません」</p>



<p class="wp-block-paragraph">どちらも、<strong>もう通用しない</strong>考え方です。Let&#8217;s Encryptの期限切れの通知メールは2025年に終了しましたし、第6回で見たとおり、証明書の有効期間は<strong>2029年に47日</strong>まで短くなります。年に1回だった作業が、ほぼ毎月になるのです。</p>



<p class="wp-block-paragraph">第7回までで、証明書とTLSの仕組みを見てきました。第8回では運用の話に移り、<strong>期限切れを防ぐための棚卸し、ACMEによる自動更新、期限の監視</strong>を扱います。</p>


<div class=".for-sp">
<div id="im-5078de7a65f140ac9d12a50b8ac9ee9c">
  <script async src="https://imp-adedge.i-mobile.co.jp/script/v1/spot.js?20220104"></script>
  <script>(window.adsbyimobile=window.adsbyimobile||[]).push({pid:81546,mid:567719,asid:1946055,type:"banner",display:"inline",elementid:"im-5078de7a65f140ac9d12a50b8ac9ee9c"})</script>
</div>
</div>

<div class=".for-pc">
<!-- admax -->
<script src="https://adm.shinobi.jp/s/8ae3a18ff526e95e579f5814fddd88f6"></script>
<!-- admax -->
<!--
<div id="im-3931cf74888b4888ae5fb170df744749">
  <script async src="https://imp-adedge.i-mobile.co.jp/script/v1/spot.js?20220104"></script>
  <script>(window.adsbyimobile=window.adsbyimobile||[]).push({pid:81546,mid:567718,asid:1946233,type:"banner",display:"inline",elementid:"im-3931cf74888b4888ae5fb170df744749"})</script>
</div>
-->
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">期限切れ事故の実例</a></li><li><a href="#toc2" tabindex="0">手作業の更新が破綻する理由</a></li><li><a href="#toc3" tabindex="0">証明書の棚卸し（CT・スキャン・台帳）</a></li><li><a href="#toc4" tabindex="0">ACME（RFC 8555）の流れ</a></li><li><a href="#toc5" tabindex="0">チャレンジの選び方</a></li><li><a href="#toc6" tabindex="0">Let&#8217;s Encryptの現在（2026年9月）</a></li><li><a href="#toc7" tabindex="0">ACMEクライアント</a></li><li><a href="#toc8" tabindex="0">ARI（ACME Renewal Information）</a></li><li><a href="#toc9" tabindex="0">社内でのACME</a></li><li><a href="#toc10" tabindex="0">期限の監視</a></li><li><a href="#toc11" tabindex="0">鍵の更新とローテーション</a></li><li><a href="#toc12" tabindex="0">自動化できない機器の扱い</a></li><li><a href="#toc13" tabindex="0">考えてみよう</a></li><li><a href="#toc14" tabindex="0">まとめ</a></li><li><a href="#toc15" tabindex="0">連載「証明書入門」全11回</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">期限切れ事故の実例</span></h2>



<p class="wp-block-paragraph">証明書の期限切れは、<strong>原因が単純なのに影響が大きい</strong>障害の代表です。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/cert08-s099.png" alt="有効期限は1つなのでセンターAとBを冗長化しても同じ時刻に同時に止まることと、2018年12月6日の携帯電話サービスの約4時間半の停止、2020年2月3日のMicrosoft Teamsの数時間の停止を示す図"/></figure>



<ul class="wp-block-list">
<li><strong>2018年12月6日</strong>：ソフトバンクとワイモバイルの4G携帯電話サービスなどが、全国で約4時間半使えなくなった。原因はエリクソン社製の交換機のソフトウェアで、組み込まれたデジタル証明書の有効期限が誤って処理されたこと。同じ時刻に海外11か国の通信事業者でも障害が起き、有効期限は出荷時にソフトウェアへ埋め込まれていて、通信事業者側からは確認できなかったと説明されている</li>


<li><strong>2020年2月3日</strong>：Microsoft Teamsが数時間使えなくなった。Microsoftは認証用の証明書の期限切れが原因と公表した</li>
</ul>



<p class="wp-block-paragraph">教訓は3つです。</p>



<ol class="wp-block-list">
<li>証明書は、自分で買ったものだけでなく、<strong>製品の中にも埋め込まれている</strong></li>


<li>期限は分かっていても、<strong>記憶や手作業に頼ると漏れる</strong></li>


<li>切れた瞬間に<strong>全台が同時に止まり、冗長構成でも救えない</strong></li>
</ol>



<p class="wp-block-paragraph">期限は台数に関係なく1つ。切れた瞬間に全部が止まります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc2">手作業の更新が破綻する理由</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>最長有効期間</th><th>適用開始</th><th>1枚の年間の更新回数（目安）</th><th>100枚なら年間の作業</th></tr></thead><tbody><tr><td>398日</td><td>2020年9月</td><td>約1回</td><td>約100回</td></tr><tr><td>200日</td><td>2026年3月15日</td><td>約2〜3回</td><td>約200〜300回</td></tr><tr><td>100日</td><td>2027年3月15日</td><td>約4〜6回</td><td>約400〜600回</td></tr><tr><td>47日</td><td>2029年3月15日</td><td>約8〜12回</td><td>約800〜1,200回</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">（回数の幅は、期限ぎりぎりで更新する場合と、余裕を持って残り1/3で更新する場合）</p>



<p class="wp-block-paragraph">47日の証明書は、<strong>ほぼ毎月の作業</strong>になります。手作業ではCSRの作成、ドメイン認証（2029年からは再利用10日）、配置、再読み込みの確認を毎月繰り返すことになり、<strong>休暇や異動で必ず漏れます</strong>。</p>



<p class="wp-block-paragraph">対策の中心は、自動化できるものは<strong>ACMEで自動化</strong>し、<strong>手作業の枚数を減らす</strong>ことです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc3">証明書の棚卸し（CT・スキャン・台帳）</span></h2>



<p class="wp-block-paragraph">自動化も監視も、<strong>どこに何枚の証明書があるか</strong>が分からなければ始まりません。棚卸しには3つの方法を組み合わせます。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/cert08-s101.png" alt="CTログ（crt.sh）で公開CAの証明書を、スキャン（443・636等）で社内・機器の証明書を、自動化ツール・監視で更新の状況を集めて台帳と突き合わせ、台帳に無い野良証明書と、台帳にあるのに見つからない証明書を見つけることを示す図"/></figure>



<ol class="wp-block-list">
<li><strong>CTログ</strong>（第5回）：公開CAの証明書はすべて記録されるため、crt.shなどで自社ドメインを検索すると、社内の誰かが取った証明書まで一覧できる。ただし、社内CAや自己署名の証明書は載らない</li>


<li><strong>ネットワークのスキャン</strong>：社内のアドレス範囲の443番、LDAPS（636番）、メールの465・587番などに接続し、返ってくる証明書を集める。アプライアンスや管理画面の証明書も見つかる</li>


<li><strong>台帳</strong>：証明書ごとに、名前（SAN）、発行元、有効期限、<strong>秘密鍵の場所、配置先、更新方法（自動か手動か）、担当者</strong>を記録する</li>
</ol>



<p class="wp-block-paragraph">スキャンとCTの結果を台帳と突き合わせると、「<strong>台帳に無い証明書（野良証明書）</strong>」と「<strong>台帳にあるのに見つからない証明書</strong>」が分かります。CTは社内CAを、スキャンは届かない場所を見落とすので、組み合わせが大切です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc4">ACME（RFC 8555）の流れ</span></h2>



<p class="wp-block-paragraph"><strong>ACME（Automatic Certificate Management Environment、RFC 8555）</strong>は、証明書の申請から発行までを<strong>HTTPSのAPIで自動化</strong>する標準の手順です。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/cert08-s102.png" alt="ACMEクライアントがnewAccount、newOrderを送り、CAからのチャレンジのトークンをWebやDNSに置いて確認を依頼し、CAが複数の拠点から確認した後、finalizeでCSRを送り、証明書をダウンロードして配置・再読み込みし、期限前かARIで更新を繰り返す流れを示す図"/></figure>



<ol class="wp-block-list">
<li><strong>アカウント</strong>：鍵ペアを作ってCAに登録する。以降の要求はすべてこの鍵で署名する</li>


<li><strong>注文（newOrder）</strong>：載せたい名前を伝える</li>


<li><strong>認証</strong>：CAが名前ごとにチャレンジ（第6回）を返し、クライアントはトークンをWebサーバーやDNSに置いて確認を頼む</li>


<li><strong>CSRの送信（finalize）</strong>：すべての名前の認証が済んだら、機器の上で作ったCSRを送る</li>


<li><strong>発行</strong>：証明書をダウンロードして配置し、サービスを再読み込みする</li>


<li><strong>更新</strong>：期限が近づくか、CAから時期を知らされたら（ARI）、②から繰り返す</li>
</ol>



<p class="wp-block-paragraph"><strong>人が関わるのは最初の設定だけ</strong>。以降は②〜⑤を自動で回します。更新のたびに、鍵も新しく作るのが普通です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc5">チャレンジの選び方</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>状況</th><th>向くチャレンジ</th><th>注意点</th></tr></thead><tbody><tr><td>公開 Web サーバーで、ポート80が外から届く</td><td>HTTP-01</td><td>LB 配下では、どのサーバーに来てもトークンを返せるようにする</td></tr><tr><td>ワイルドカード証明書が要る</td><td>DNS-01</td><td>HTTP-01・TLS-ALPN-01 では取れない</td></tr><tr><td>社内サーバーで外から届かない（名前は公開ドメイン）</td><td>DNS-01</td><td>DNS を更新する API の認証情報をサーバーに置くことになる</td></tr><tr><td>DNS の権限を広く渡したくない</td><td>DNS-01＋CNAME 委任</td><td>_acme-challenge を認証専用のゾーンへ CNAME し、そのゾーンだけ更新させる</td></tr><tr><td>ポート443しか開けられない</td><td>TLS-ALPN-01</td><td>対応するクライアントが限られる</td></tr><tr><td>機器が多く、DNS を毎回変えたくない</td><td>DNS-PERSIST-01</td><td>固定の TXT で済む。Let&#8217;s Encrypt はステージングのみ（2026年9月）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">DNS-01の最大のリスクは、<strong>DNSを書き換えられる認証情報をサーバーに置く</strong>ことです。ゾーン全体の権限が漏れると、Webサイトの乗っ取りにつながります。権限をレコード単位に絞る、CNAMEで認証専用のゾーンに委任する、などで被害を限定しましょう。CAAの<code>accounturi</code>・<code>validationmethods</code>（RFC 8657、第5回）で、使えるアカウントと方法を絞ることもできます。</p>


<div class=".for-sp">
<div id="im-c929b2770f964f7f88505b9ee7500db9">
  <script async src="https://imp-adedge.i-mobile.co.jp/script/v1/spot.js?20220104"></script>
  <script>(window.adsbyimobile=window.adsbyimobile||[]).push({pid:81546,mid:567719,asid:1946057,type:"banner",display:"inline",elementid:"im-c929b2770f964f7f88505b9ee7500db9"})</script>
</div>
</div>

<div class=".for-pc">
<!-- admax -->
<script src="https://adm.shinobi.jp/s/a1cf34f40c7d6f1acda2feeee1bc3a16"></script>
<!-- admax -->
<!--
<div id="im-3b5a2348efcc4b7a9435e1334f6172f2">
  <script async src="https://imp-adedge.i-mobile.co.jp/script/v1/spot.js?20220104"></script>
  <script>(window.adsbyimobile=window.adsbyimobile||[]).push({pid:81546,mid:567718,asid:1946056,type:"banner",display:"inline",elementid:"im-3b5a2348efcc4b7a9435e1334f6172f2"})</script>
</div>
-->
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc6">Let&#8217;s Encryptの現在（2026年9月）</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>内容</th></tr></thead><tbody><tr><td>プロファイル</td><td>classic（既定）：90日・認証の再利用30日／tlsserver：45日（2026年5月から）／shortlived：160時間（約6日）</td></tr><tr><td>既定の有効期間の短縮予定</td><td>2027年2月10日から classic を64日（再利用10日）、2028年2月16日から45日（再利用7時間）</td></tr><tr><td>短期証明書・IP アドレスの証明書</td><td>2026年1月に一般提供。IP アドレスの証明書は shortlived のみ</td></tr><tr><td>失効の確認</td><td>OCSP は2025年8月6日に終了。CRL のみ（第5回）</td></tr><tr><td>期限切れの通知メール</td><td>2025年6月4日に終了。監視は自分で行う</td></tr><tr><td>クライアント認証（clientAuth）</td><td>2026年2月11日に classic から削除。tlsclient も7月8日に終了</td></tr><tr><td>更新の時期</td><td>ARI（RFC 9773）に従うことを推奨</td></tr><tr><td>DNS-PERSIST-01</td><td>ステージングで提供。本番は未提供</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">冒頭の「メールが来るから大丈夫」は、ここで崩れます。通知メールをやめた理由として、自動化の普及、数百万のメールアドレスを持ち続けることのプライバシー上の問題、費用が挙げられています。<strong>「メールが来るから大丈夫」だった運用には、すでに通知が来ていません</strong>。プロファイルはACMEクライアントで選べます（certbotは<code>--preferred-profile</code>）。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc7">ACMEクライアント</span></h2>



<figure class="wp-block-table"><table><thead><tr><th>クライアント</th><th>動作環境</th><th>特徴</th><th>向く場面</th></tr></thead><tbody><tr><td>certbot</td><td>Linux 等（Python）</td><td>EFF 製。Apache・nginx の設定を書き換えるプラグイン。ARI 対応（4.1 以降）</td><td>Linux の Web サーバー</td></tr><tr><td>acme.sh</td><td>Linux・Unix（シェルスクリプト）</td><td>依存が少ない。DNS の API に多数対応。既定の CA は ZeroSSL</td><td>小さな環境、DNS-01、機器への配布</td></tr><tr><td>win-acme</td><td>Windows</td><td>IIS のバインドを自動で更新。証明書ストアや PFX に保存</td><td>IIS・Windows サーバー</td></tr><tr><td>Posh-ACME</td><td>Windows・Linux（PowerShell）</td><td>PowerShell のモジュール。DNS のプラグインが豊富</td><td>PowerShell で組み込みたい場面</td></tr><tr><td>Caddy・Traefik 等</td><td>Web サーバー・リバースプロキシーに内蔵</td><td>設定に名前を書くだけで取得・更新まで自動</td><td>新規構築、コンテナ環境</td></tr><tr><td>cert-manager</td><td>Kubernetes</td><td>Ingress・Secret と連携して自動更新</td><td>Kubernetes</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">acme.shでLet&#8217;s Encryptを使うなら、<code>--set-default-ca --server letsencrypt</code>で既定のCAを変えます。</p>



<p class="wp-block-paragraph">どのクライアントでも、次の3点は<strong>必ず設定</strong>しましょう。</p>



<ol class="wp-block-list">
<li><strong>更新後にサービスを再読み込みするフック</strong></li>


<li><strong>失敗したときの通知</strong></li>


<li><strong>秘密鍵ファイルの権限</strong></li>
</ol>



<p class="wp-block-paragraph">クラウドの証明書サービス（ACM等、第9回）は、ACMEを使わずに自動更新されます。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc8">ARI（ACME Renewal Information）</span></h2>



<p class="wp-block-paragraph">ACMEクライアントは、これまで「期限の30日前」のように<strong>自分で決めた時期</strong>に更新していました。しかし、CAが大量の証明書を失効させる事故が起きると、利用者は期限に関係なく急いで更新しなければなりません。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/cert08-s106.png" alt="ACMEクライアントがCAのrenewalInfoに1日に数回問い合わせ、返ってきたsuggestedWindowの中のランダムな時刻に更新することと、失効の予定があるときは時間帯が前倒しされてすぐ更新することを示す図"/></figure>



<p class="wp-block-paragraph">その合図を自動で伝えるのが、<strong>ARI（ACME Renewal Information、RFC 9773、2025年6月）</strong>です。</p>



<ul class="wp-block-list">
<li>クライアントは証明書ごとにCAの<code>renewalInfo</code>に問い合わせ、CAは<strong>更新すべき時間帯（suggestedWindow）</strong>を返す</li>


<li>普段は有効期間の後半が示され、<strong>失効の予定があれば前倒し</strong>される</li>


<li>クライアントは時間帯の中の時刻をランダムに選ぶため、<strong>更新がCAに集中することも避けられる</strong></li>
</ul>



<p class="wp-block-paragraph">Chrome Root ProgramはACMEに対応するCAにARIを求めており、certbot（4.1以降）、acme.sh、Posh-ACMEなどが対応しています。<strong>いつ更新するかを決めるのは、クライアントではなくCA</strong>、という考え方です。</p>


<div class=".for-sp">
<div id="im-e200ff972f7b43fe9c8c2a7b60698c08">
  <script async src="https://imp-adedge.i-mobile.co.jp/script/v1/spot.js?20220104"></script>
  <script>(window.adsbyimobile=window.adsbyimobile||[]).push({pid:81546,mid:567719,asid:1946060,type:"banner",display:"inline",elementid:"im-e200ff972f7b43fe9c8c2a7b60698c08"})</script>
</div>
</div>

<div class=".for-pc">
<!-- admax -->
<script src="https://adm.shinobi.jp/s/b379fcf4fc1a53eab29cb4ffbda7f14f"></script>
<!-- admax -->
<!--
<div id="im-4f0e910e1dca4503a73e8d9a2678879f">
  <script async src="https://imp-adedge.i-mobile.co.jp/script/v1/spot.js?20220104"></script>
  <script>(window.adsbyimobile=window.adsbyimobile||[]).push({pid:81546,mid:567718,asid:1946059,type:"banner",display:"inline",elementid:"im-4f0e910e1dca4503a73e8d9a2678879f"})</script>
</div>
-->
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc9">社内でのACME</span></h2>



<p class="wp-block-paragraph">ACMEは公開CAだけのものではありません。<strong>社内CAでACMEを使えば、社内の証明書も同じ仕組みで自動更新</strong>できます。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/cert08-s107.png" alt="商用の公開CAはEAB付きACMEで公開サーバーに、ACME対応のstep-caはLinuxサーバー・コンテナ・機器にACMEで発行し、ACME非対応のAD CSはドメイン参加のWindowsには自動登録（GPO）で、Linux・機器には手作業かSCEP（NDES）で発行することを示す図"/></figure>



<ul class="wp-block-list">
<li>代表例はオープンソースの<strong>step-ca</strong>（Smallstep）。社内にACMEサーバーを立て、社内の名前をHTTP-01・DNS-01で認証できる</li>


<li>商用の公開CA（DigiCert、Sectigo、GlobalSign等）もACMEに対応しており、<strong>EAB（External Account Binding）</strong>の鍵でクライアントを契約に結び付ける</li>


<li>一方、<strong>AD CSはACMEに対応していない</strong>。ドメインに参加したWindowsは自動登録（第9回）で更新できるが、Linuxや機器は手作業になりがち</li>
</ul>



<p class="wp-block-paragraph">AD CSだけでは、Linuxと機器が自動化から漏れます。その場合は、ACMEに対応した社内CAを別に用意する、AD CSの前に中継するソフトを置く、機器にはSCEP（AD CSではNDES）を使う、などを検討します。どの場合も、<strong>社内CAのルート証明書の配布が前提</strong>です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc10">期限の監視</span></h2>



<p class="wp-block-paragraph">自動化しても、<strong>監視は必要</strong>です。自動更新が静かに失敗していることがあるからです。</p>



<pre class="wp-block-code"><code>$ echo | openssl s_client -connect www.example.jp:443 -servername www.example.jp 2&gt;/dev/null \
    | openssl x509 -noout -enddate -checkend $((14*86400))
notAfter=Oct 27 22:17:21 2026 GMT
Certificate will not expire          # 14日以内に切れるなら &quot;Certificate will expire&quot;、終了コード1</code></pre>



<pre class="wp-block-code"><code>PS&gt; Get-ChildItem Cert:\LocalMachine\My |
      Where-Object NotAfter -lt (Get-Date).AddDays(14) |
      Select-Object Subject, NotAfter, Thumbprint

Subject                   NotAfter             Thumbprint
-------                   --------             ----------
CN=app01.corp.example.jp  2026/10/05 8:59:59   3F2A9C…（省略）</code></pre>



<ul class="wp-block-list">
<li><strong>閾値は有効期間に合わせる</strong>。自動更新は残り1/3（47日なら約16日）で行い、監視は「<strong>更新されるはずの時期を過ぎても古いまま</strong>」を警告する。例：残り14日で警告、7日で緊急</li>


<li><strong>外から実際に接続して確かめる</strong>。ファイルが新しくなっても、サービスが再読み込みしていなければ古い証明書が返る。中間証明書の期限も見る</li>


<li>ツールの例：Zabbix（Webサイトの証明書のテンプレート）、Prometheusのblackbox_exporter（<code>probe_ssl_earliest_cert_expiry</code>）、外部の監視サービス</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc11">鍵の更新とローテーション</span></h2>



<p class="wp-block-paragraph">証明書を更新するときは、<strong>秘密鍵も作り直すか</strong>を決めておきます。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/cert08-s109.png" alt="推奨は更新のたびに鍵A・B・Cと新しくすることで、鍵Aを使い回すと1枚目の時期に漏れた鍵が危険なまま残ることと、ピン留め・DANEがあるときは新しい鍵を先に登録してから証明書を切り替えること、更新は鍵の種類をRSAからECDSA、耐量子へ変える機会であることを示す図"/></figure>



<ul class="wp-block-list">
<li><strong>原則は、更新のたびに鍵も新しくする</strong>。同じ鍵を何年も使い続けると、その間に一度でも漏れていれば、新しい証明書も危険なままになる。ACMEクライアントの多くは既定で毎回新しい鍵を作る</li>


<li>ただし、アプリや機器が公開鍵を固定して確かめている（<strong>ピン留め</strong>）場合や、<strong>DANE</strong>（TLSAレコード、連載「DNS入門」第6回）で公開鍵のハッシュをDNSに載せている場合は、<strong>新しい鍵を先に登録してから切り替える</strong>手順が必要</li>


<li>鍵が漏れた疑いがあるときは、鍵を作り直して再発行し、古い証明書を失効させる（第5回）</li>
</ul>



<p class="wp-block-paragraph">更新は、<strong>鍵の種類を見直す機会</strong>でもあります。RSAからECDSAへの切り替えや、将来の耐量子計算機暗号の証明書への移行を考えると、鍵の種類を簡単に変えられる「<strong>暗号の俊敏性（クリプトアジリティ）</strong>」は、自動化の大きな利点です。<strong>鍵が同じなら、証明書を新しくしても漏えいは続きます</strong>。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc12">自動化できない機器の扱い</span></h2>



<p class="wp-block-paragraph">すべての証明書をACMEで自動化できるわけではありません。ロードバランサーなどのアプライアンス、サーバーの管理コントローラー、古い業務システム、社外のサービスに預けた証明書などは、ACMEクライアントを入れられないことがあります。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/cert08-s110.png" alt="ACMEクライアントを入れられるなら自動化、APIやSSHで入れ替えられるなら外部のACMEで取って配る、前段にLB・プロキシーを置けるならそこでTLSを終端して自動化、公開CAが不要なら社内CAに切り替え、どれもできなければ台帳で手動更新として管理するという判断の流れ図"/></figure>



<p class="wp-block-paragraph">次の順で考えます。</p>



<ol class="wp-block-list">
<li><strong>製品の機能を調べる</strong>：ACMEクライアントの内蔵や、APIでの証明書の入れ替えに対応する製品が増えている</li>


<li><strong>外で取って配る</strong>：別のサーバーのACMEクライアントがDNS-01で取った証明書を、APIやSSHで機器に配る</li>


<li><strong>前段で終端する</strong>：前に置いたロードバランサーやリバースプロキシーでTLSを終端し、そこを自動化する（第9回）</li>


<li><strong>社内CAに切り替える</strong>：公開する必要がない管理画面などは、社内CAの証明書にすれば47日の制約を受けない</li>
</ol>



<p class="wp-block-paragraph">どれもできない機器は、<strong>台帳で「手動更新」として管理</strong>し、監視と手順書、交換の計画を用意します。<strong>最後まで残った機器だけを、人が台帳で見張る</strong>、という形を目指しましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc13">考えてみよう</span></h2>



<ol class="wp-block-list">
<li>自分の担当範囲の証明書を、台帳を見ずに何枚挙げられますか。crt.shで自社ドメインを検索すると、知らない証明書は出てきませんか。</li>


<li>今使っている証明書のうち、ACMEで自動化できるもの、外で取って配れば自動化できるもの、どうしても手作業のものは、それぞれ何枚ありますか。</li>


<li>期限切れや更新の失敗に、利用者より先に気づける仕組みはありますか。失敗したとき、誰にどう通知されますか。</li>
</ol>



<p class="wp-block-paragraph"><strong>ヒント</strong>：この記事の「棚卸し」「チャレンジの選び方」と「ACMEクライアント」「期限の監視」「自動化できない機器の扱い」の判断の順番が手がかりです。第11回の問2で、この題材を設計します。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc14">まとめ</span></h2>



<ul class="wp-block-list">
<li>期限切れは<strong>全台が同時に止まる</strong>。製品に埋め込まれた証明書にも注意</li>


<li>47日時代は<strong>年に8〜12回</strong>の更新。<strong>手作業は必ず漏れる</strong></li>


<li>自動化の前に<strong>棚卸し</strong>。CT・スキャン・台帳を突き合わせる</li>


<li><strong>ACME</strong>で申請から更新まで自動化。チャレンジは<strong>HTTP-01かDNS-01</strong>、DNS-01は権限を絞る</li>


<li>Let&#8217;s Encryptの<strong>通知メールはもう来ない</strong>。<strong>ARI</strong>で更新時期をCAに合わせる</li>


<li>監視は<strong>外から実際に接続</strong>して確かめる。自動化できない機器は<strong>台帳で見張る</strong></li>
</ul>



<p class="wp-block-paragraph">次回は、<strong>社内PKI（AD CS）</strong>とクラウドの証明書サービス、ロードバランサーでのTLS終端、vSphereの証明書を扱います。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc15">連載「証明書入門」全11回</span></h2>



<ol class="wp-block-list">
<li><a href="https://www.seichan.org/2026/10/cert-01-why.html" target="_blank">なぜ証明書が必要か</a></li>


<li><a href="https://www.seichan.org/2026/10/cert-02-crypto-basics.html" target="_blank">暗号の基礎</a></li>


<li><a href="https://www.seichan.org/2026/10/cert-03-hands-on.html" target="_blank">openssl・PowerShellで試す</a></li>


<li><a href="https://www.seichan.org/2026/10/cert-04-x509.html" target="_blank">X.509証明書の中身</a></li>


<li><a href="https://www.seichan.org/2026/10/cert-05-pki-trust.html" target="_blank">PKIと信頼の仕組み</a></li>


<li><a href="https://www.seichan.org/2026/10/cert-06-issuance.html" target="_blank">証明書の種類と発行</a></li>


<li><a href="https://www.seichan.org/2026/10/cert-07-tls.html" target="_blank">TLSの仕組み</a></li>


<li><strong>ライフサイクルと自動化（この記事）</strong></li>


<li><a href="https://www.seichan.org/2026/10/cert-09-private-pki-cloud.html" target="_blank">社内PKIとクラウド</a></li>


<li>証明書トラブルシュート</li>


<li>証明書の設計演習</li>
</ol>
]]></content:encoded>
					
					<wfw:commentRss>https://www.seichan.org/2026/10/cert-08-lifecycle.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
