X.509証明書仕様(RFC5280)でのOIDの読み方

OIDとASN.1

  • X.509証明書はRFC5280で定義されており、証明書を作成する際に使用するOIDもこの中で定義されています。
  • 例えば、拡張キー使用法(EKU)の記載を探すために、RFC5280を”2.5.29.37″で検索しても見つかりません。OIDの定義は後述のようにASN.1という形式で定義されており、単純な番号の羅列では定義されていないためです。
  • 拡張キー使用法(EKU: “2.5.29.37”)の定義
    • 証明書拡張(id-ce)としてOID: “2.5.29”が定義されています。
    • 拡張キー使用法(id-ce-extKeyUsage)は”{ id-ce 37 }”と定義されています。
      前項のid-ceの値を展開すると”2.5.29.37″になります。

  • 拡張キー使用法(EKU)で指定可能なキーの定義
    EKUの値として、サーバ認証やクライアント認証等の目的を表現するキーを指定します。
    目的キーの値は、例えばサーバ認証であれば”1.3.6.1.5.5.7.3.1″、クライアント認証であれば”1.3.6.1.5.5.7.3.2″を指定します。これらの目的キーは次のように定義されています。

    • X.509証明書の標準(id-pkix)として、”1.3.6.1.5.5.7″が定義されています。
      (PKIXは”the Public-Key Infrastructure using X.509″の意味のようです。)

    • 目的キー共通(id-kp)として”{ id-pkix 3 }”が定義されています。前項のid-pkixを展開すると”1.3.6.1.5.5.7.3″となります。
      目的キーの一つであるサーバ認証(id-kp-serverAuth)は”{ id-kp 1 }”と定義されています。前述のid-kpを展開すると”1.3.6.1.5.5.7.3.1″となります。
      同様に、クライアント認証は”{ id-kp 2 }”と定義されているので、id-kpを展開して”1.3.6.1.5.5.7.3.2″となります。

証明書のASN.1の確認方法

certutilを使用することで、証明書の内容をASN.1構造で確認できます。