X509証明書項目-基本制約(basicConstraints)
説明(書籍から一部引用)
BasicConstraints拡張領域でCA証明書の識別ができます。この拡張領域はCAフィールドとPathLenConstraintフィールドを保持しています。基本制約CAフィールドが真にセットされた証明書で証明されている公開鍵を持つエンティティは、証明書に署名することが許可されます。
CAフィールドが真にセットされると、証明書パスでもこの証明書のあとに続いてもよいCA証明書の最大数を示すPathLenConstraintフィールドも設定されます。経路の長さが0に設定されると、対象CAはエンドエンティティ証明書しか発行できなくなります。他のCAに証明書を発行できなくなるということになります。
X.509はこの拡張領域にcriticalの印をつけることを推奨しています。そうしないと証明書を発行する権限がエンドエンティティに与えられてしまうかもしれません。CAフィールドが偽にセットされると、証明書にある公開鍵は、他の証明書の署名を検証するのに使用できません。CAフィールドが真にセットされ、パスの長さが指定されたら、証明書ユーザーはパスの長さの値に従って証明書パスを検証しなければなりません。
この拡張領域がない、あるいはnon-criticalの印がついている場合、その証明書はエンドエンティティ証明書と見なされなければなりません。また、公開鍵は他の証明書の署名を検証するのに使用することはできません。
CA証明書では、この拡張領域にcriticalの印をつけなければなりません。
OpenSSLの設定例
設定ファイルをgrepすると以下のようになっている。
# grep -i basicConstraints openssl.cnf basicConstraints=CA:FALSE basicConstraints = CA:FALSE #basicConstraints = critical,CA:true basicConstraints = CA:true # basicConstraints= critical, DER:30:03:01:01:FF basicConstraints=CA:FALSE #