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

【ITニュース解説】AKKY, DIGITAL OCEAN DNS, AND letsencrypt CERTIFICATES.

2025年09月26日に「Dev.to」が公開したITニュース「AKKY, DIGITAL OCEAN DNS, AND letsencrypt CERTIFICATES.」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

WebサイトのSSL証明書更新に失敗した。原因はドメインのDNSセキュリティ(DNSSEC)設定の非互換とWebサーバーのIPv6対応不足だった。ドメインのDNSSEC設定を削除し、Webサーバー(NGINX)にIPv6リスニング設定を追加したことで、証明書を更新しサイトを復旧できた。

ITニュース解説

今回のニュース記事は、ウェブサイトを安全に公開するために必須となるSSL証明書の更新時に発生したトラブルと、その解決策について詳しく解説している。システムエンジニアを目指す皆さんにとって、ドメイン名、DNS(Domain Name System)、SSL/TLS、IPv6といった基本的なITインフラ技術がどのように連携し、トラブルの原因となりうるかを理解するための貴重な事例となるだろう。

まず、ウェブサイトの安全性を保つために重要なSSL証明書について説明する。私たちがウェブサイトを閲覧する際、URLが「https://」で始まる場合、そのサイトではSSL/TLS(Secure Sockets Layer/Transport Layer Security)という暗号化技術が使われている。この技術は、ウェブサイトとユーザーのブラウザとの間の通信を暗号化し、個人情報などのデータが第三者に盗まれたり、途中で改ざんされたりするのを防ぐ役割を果たす。SSL/TLS通信を行うためには、ウェブサイトの身元を証明するデジタル証明書、通称「SSL証明書」が必要だ。ニュース記事に登場する「Let's Encrypt」は、このSSL証明書を無料で提供している認証局の一つで、多くのウェブサイトで利用されている。Let's Encryptの証明書は通常90日間という短い有効期限が設定されており、定期的な更新が求められる。今回のトラブルは、Digital Oceanというクラウドサービスの「Droplet」(仮想サーバー)でホストされていたウェブサイトのLet's Encrypt証明書が期限切れとなり、再登録ができなくなったことから始まった。

筆者は証明書を更新しようとした際に、「DNSSEC: DNSKEY Missing」と「IPv6が設定されていない」という二つのエラーメッセージに直面した。これらは、それぞれドメイン名のセキュリティ設定と、ウェブサーバーのネットワークプロトコル設定に問題があることを示唆していた。

最初の大きな問題は「DNSSEC: DNSKEY Missing」というエラーだった。DNSSEC(Domain Name System Security Extensions)は、インターネットの住所録ともいえるDNSの情報が改ざんされていないことを保証するためのセキュリティ技術だ。DNSは、私たちがウェブサイトにアクセスする際に、ドメイン名(例: example.com)をIPアドレスに変換する役割を担い、この情報が不正に書き換えられると大きな被害が発生する。DNSSECは、デジタル署名を用いてDNS情報の信頼性を高める。このデジタル署名に関連するのが「DSレコード(Delegation Signer Record)」だ。DSレコードは、親ドメインゾーンに登録され、子ドメインゾーンのDNSSEC署名鍵(KSK: Key Signing Key)を指し示す役割を持つ。これにより、DNS情報の連鎖的な信頼性を確立する。

筆者が調査を進めた結果、ドメイン管理会社であるAKKY(メキシコの.mxドメインを管理する会社)のドメイン設定画面に、「REGISTRO DS」という新しいオプションが追加されており、そこにKSKキーのデータが登録されていたことを発見した。このDSレコードは、通常DNSSECを有効にする際に必要な手順だが、AKKYで設定されたこのDSレコードが、Digital OceanのDNSサービスと互換性がない状態だったことが判明した。つまり、ドメインのセキュリティ強化のための設定が、そのドメインが利用しているDNSサービスと正しく連携できていなかったのだ。このDSレコードが原因で、Let's Encryptの証明書認証プロセスでDNSSECの検証が正しく行われず、エラーとなっていたと考えられる。筆者は、このDSレコードを削除することでDNS関連の問題を解決した。DNS設定の変更後、DNSVizというオンラインツールを使ってDNS接続の状態を確認したところ、問題が解決されていることが示された。このようなツールは、DNS関連のトラブルシューティングにおいて、設定が正しく反映されているか、どこに問題があるかなどを視覚的に確認できるため非常に有用だ。

DNSの問題が解決した後も、Let's Encryptの証明書は生成されなかった。しかし、エラーメッセージは「IPv6が承認されていない」という内容に変化した。これは、最初の問題が解決されたことで、次の別の問題が浮上したことを示している。IPv6は、現在主流のインターネットプロトコルであるIPv4の後継となる次世代プロトコルだ。IPv4のIPアドレス枯渇問題を受け、より広大なアドレス空間を提供するIPv6への移行が進められている。筆者は、まずDigital OceanのDroplet自体にAAAAレコード(ドメイン名にIPv6アドレスを紐付けるDNSレコード)を追加し、DropletでIPv6アドレスが動作するように設定していた。しかし、この設定だけでは証明書の更新には至らなかった。

最終的な解決策は、ウェブサーバーソフトウェアであるNGINXの設定ファイルを変更することだった。NGINXは、ウェブサイトのコンテンツをユーザーに配信する役割を持つサーバーソフトウェアであり、特定のポートで外部からの接続を待ち受ける(リッスンする)ように設定する必要がある。HTTPS通信で一般的に使われるポートは443だ。筆者は、NGINXの設定ファイルにおいて、ポート443でIPv4アドレスだけでなく、IPv6アドレスでも接続を待ち受けるように設定を追加した。具体的には、「listen [::]:443 ssl http2;」という行を追加している。ここでの「[::]」は、利用可能なすべてのIPv6アドレスを意味する。この変更により、NGINXサーバーはIPv6経由の接続要求にも適切に応答できるようになり、Let's Encryptの証明書認証プロセスがIPv6経由で正しく実施されるようになったと考えられる。その結果、証明書の更新が成功し、ウェブサイトが再び正常に表示されるようになった。

今回のトラブルシューティングは、ウェブサイトの公開と安定運用において、ドメイン名、DNS、SSL証明書、ウェブサーバーの設定(NGINXなど)、そしてネットワークプロトコル(IPv4とIPv6)といった多岐にわたる技術要素が密接に連携していることを明確に示している。一つの設定ミスや、異なるサービス間での互換性の問題が、全体の機能停止につながることがある。システムエンジニアとして、これらの個々の技術要素がどのように機能し、どのように相互作用するかを深く理解することは非常に重要だ。また、エラーメッセージを注意深く読み解き、一つずつ問題を切り分けて解決していくプロセスは、実務で直面する複雑な課題を解決するための典型的なアプローチとなる。たとえ「セキュリティ強化」のための新しい機能であっても、それを導入する際には、利用している他のサービスやインフラとの互換性を事前に確認すること、そしてIPv6のような新しいプロトコルへの対応を適切に行うことが、安定したシステム運用には不可欠であるという重要な教訓を、このニュース記事は私たちに提供している。

関連コンテンツ

関連IT用語