

AWS IoT発行のX.509証明書、有効期限は一律2049年12月31日だった
この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。
AWS IoT CoreのX.509証明書の有効期限について調べる機会があったので整理しておく。よくある説明だと「AWS IoTが発行する証明書はデフォルトで1年」「自前の証明書なら最大40年まで設定できる」みたいな話を見かけるけど、これは間違い。
何が違うか
公式ドキュメントにはこう書いてある。
X.509 certificates generated by AWS IoT expire at midnight UTC on December 31, 2049 (2049-12-31T23:59:59Z).
つまり create-keys-and-certificate や One-click certificate creationでAWS IoTに生成してもらう証明書は、作成したタイミングに関係なく一律で2049年12月31日 23:59:59 UTCに失効する。今日作っても、5年後に作っても失効日は同じ。「1年後に失効するからローテーションが必要」という前提そのものが成立しない。
AWS re:Postの質問でも同じ内容が確認できて、2022年に作成した証明書の失効日が2050年になっていることに対して「作成年+28年とかではなく、常に2049年12月31日固定」とAWS側から回答が付いていた。
「独自CA署名の証明書は最大40年まで」という話も、少なくとも公式ドキュメント側にはそれらしい記載が見当たらなかった。自分のCAで証明書に署名する場合、有効期限はopensslなりACM Private CAなりの設定次第で決まるだけで、AWS IoT側が「40年が上限」というルールを課しているわけではなさそう。ここは未確認だけど、少なくとも「AWSの制約として40年」という説明の根拠は見つけられなかった。
実務への影響
「AWSが自動でデフォルト1年後に失効させてくれる」という前提でローテーション設計をしていると、実際には証明書が2049年まで有効なままになる。これは裏を返すと、AWS IoTが証明書の有効期限切れを勝手に管理してくれるわけではないということでもある。
ローテーションや失効管理をやりたい場合は、こちら側で仕組みを作る必要がある。
- 独自CAで署名し、任意の有効期限を設定する
- AWS IoT Device Defenderの
DEVICE_CERTIFICATE_EXPIRING_CHECKで期限監視する(閾値は30日〜3652日で設定可能、デフォルト30日) - 証明書のライフサイクル管理をJobsやLambdaで自動化する
「How to manage IoT device certificate rotation using AWS IoT」というAWS公式ブログでもこのあたりのローテーション手法が解説されている。
まとめると
- AWS IoT生成の証明書はデフォルト1年ではなく、固定で2049年12月31日まで有効
- 独自証明書の「最大40年」という上限は公式ドキュメントでは確認できなかった(実機・一次情報未確認)
- ローテーションをしたいなら、有効期限も含めて自分で設計する必要がある