私が正しく理解している場合は、証明機関の承認DNSレコードを使用して、特定のドメインの証明書の発行を許可されている証明機関を指定します。そのレコードが存在し、そこにCAがリストされていない場合、そのCAはドメインの証明書の発行を拒否する必要があります。
ただし、これはCAの脆弱性から保護するようには見えません。信頼できる機関がCAAを適切に実装していない場合、または機関の秘密鍵が侵害されている場合、CAAは役に立ちません。
私の質問は、ブラウザがCAAレコードをチェックしないのはなぜですか?指定された証明書がレコードで承認されたCAによって発行されたものでない場合、証明書は無効と見なされます。これにより、Webサイトの所有者が信頼することを選択したCAのみに信頼する必要があるCAのリストが削減され、セキュリティが大幅に向上します。
HPKPが不正な証明書を防ぐためにも使用されていることを理解しています。ただし、これはHTTPでのみ機能し、サイトで受信した最初の証明書を信頼するか、サードパーティのプリロードリストを信頼する必要があります。
これはブラウザが実装できるものですか、それともここで何か不足していますか?
私はちょうど RFC 6844 で答えを見つけました、DNS認証局承認(CAA)リソースレコード:
CAAレコードのセットには、対応するDNSドメインの証明書を発行する権限の現在の付与のみが記述されています。証明書は通常、少なくとも1年間有効であるため、現在発行されているCAAレコードに準拠していない証明書が、証明書の発行時に発行されたCAAレコードに準拠していた可能性があります。 依存アプリケーションは、証明書検証の一部としてCAAレコードを使用してはなりません。[鉱山を強調]
基本的に、ドメインで現在有効な証明書を記述することはCAAの目的ではありません。 CAがレコード上にあるときに証明書が発行され、そのレコードが後で削除された場合、その証明書は、有効期限が切れる(または取り消される)まで有効なままです。
DNSを介したブラウザ(または依存アプリケーション)での証明書の検証は、DAE、または RFC 6698 で指定される名前付きエンティティのDNSベースの認証の目的のようです。残念ながら、DANEは広く実装されていません。