Shammer's Philosophy

My private adversaria

X509証明書項目-認証局識別子(AuthorityKeyIdentifier)

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

証明書の署名を検証するために、認証局が所有する複数の公開鍵のうちどれを使用するかを指定するために使用されます。これにより認証局は複数の鍵集合を使用した運用が可能となり、証明書ユーザーはどの鍵集合が使用されるべきかを識別できます。
AuthorityKeyIdentifierは、自己署名されているCA証明書を除き、証明書チェーンの構築支援のため、すべてのCA証明書に含まれていなければなりません。
この拡張領域のkeyIdentifierフィールドに値を指定するか、CA証明書シリアル番号(authorityCertSerialNumber)とCA名(authorityCertIssuer)フィールドの組み合わせを使用すれば、ある特定のCA鍵を識別することができます。この両方のメカニズムが使用可能ですが、証明書パスの構築の際にはkeyIdentifier形式を使った方が、より明確にCA鍵を識別することができます。

OpenSSLの設定例

設定ファイルをgrepすると以下のようになっている。

# grep authorityKeyIdentifier openssl.cnf 
authorityKeyIdentifier=keyid,issuer
authorityKeyIdentifier=keyid:always,issuer
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
authorityKeyIdentifier=keyid:always
authorityKeyIdentifier=keyid,issuer
#

個人的見解

自分がCAを立てるとき、それは大半が検証用途だ。ほとんど自分専用と言ってもよい。この設定を複数使い分けてCAを構築すれば、証明書を署名する際に何らかの目的ごとに(証明書用途ごとにCAを用意、証明書ユーザーのロケーションごとにCAを用意など)、同一のCAで複数の証明書で署名というようなことが可能になるだろうが、自分が現状想定する使い方では、この設定は、OpenSSLの初期状態から特に変更しないままでよさそうだ。