Shammer's Philosophy

My private adversaria

X509証明書項目-名称制約(NameConstraints)

説明(書籍から一部引用)

NameConstraints拡張領域により、CAは他のCAを証明する際に名前空間のどの部分がカバーされるかを識別できます。この拡張領域によりカバーされる名前形式のデータタイプはGeneralNameであり、幅広い命名規則がカバーされます。しかしながら、明確な階層構造名前空間をサポートするGeneralName形式のみが有効です。これらの要件に適合するディレクトリ名形式にはX.500、インターネットEメールアドレスおよびインターネットドメイン名が含まれます。
NameConstraints拡張領域はCA証明書内でのみ使用できます。この拡張領域により、パス内の他の証明書が準拠する必要がある名前空間の部分を定義する、サブツリーのリストが提供されます。
PermittedSubtreesフィールドは、新たに定義された受容可能な名前空間に将来含まれるすべての名前サブツリーのリストです。証明書パス内でNameConstraints拡張領域を含む証明書の後に現れるすべての証明書の対象者はリストされたサブツリー内の名前を持っている必要があります。
NameConstraints拡張領域は、あとに続く証明書の中でSubjectまたはSubjectAlternativeNameが従わなければならない名称空間を定義します。この拡張領域で、含まれなければならない名称、あるいは除外されなければならない名称を示す名称ツリーを指定することができます。この拡張領域にはcriticalの印をつけなければなりません。

OpenSSLの設定例

デフォルトの設定ファイルに記載はないようだ。

# grep -i nameConstraints openssl.cnf 
#

個人的見解

引用箇所からは省いたが、これはクリティカルでもNonクリティカルでもよい、とある。一方で、PKIX Noteではcriticalの印をつけなければなりません、と(こっちのみ引用)。でもOpenSSLの初期設定にないので、当面は放置。これまでに困ったこともない。