例えばこれは、RFC4514 (Google翻訳) に出てくるLDAPのDN (Distinguished Name) の例です。
UID=jsmith,DC=example,DC=net
カンマ区切りで、順序は右から左(右が大まかな単位で、左へ行くほど細かい単位)ですよね!DNとはそういうものだとLDAPでは習うのです。Active Directoryなんかもこれです。
ところで、DNといえばX.509証明書のSubject欄やIssuer欄もDNです。例えばこれは、日本政府GPKI ApplicationCA2証明書のSubject欄です。
C=JP, O=Japanese Government, OU=GPKI, CN=ApplicationCA2 Root
。。。あれ?
左から右の順になっています。さっきのLDAPと逆ですよね。どうなっているんでしょうか。
LDAPもX.509も、DNの源流はITU-TのX.501にあります。ITUは規格書の古いバージョンを無償公開しており(最新版は金を取ります)、今なら2012年版をダウンロードできます。そしてこれが、同書9.5節「Distinguished names」からの抜粋!
{C = GB, O = Telecom,
(OU = Sales, L = Ipswich),
CN = Smith}
まさかの上から下。
考察
なぜこうなったのかという経緯をきちんと調べてはいないのですが、X.501で定義するのは抽象的なデータ構造のみで、実際にコンピューターで扱えるUTF-8なりの文字列に変換するのはRFCという棲み分けになっているらしいのです。そこでRFC4514 (LDAP) とRFC5280 (X.509証明書)が個別に策定されたため、順序に関して足並みが揃わなくなったのであろうと、とりあえず推測するところです。
ほかにもDNSのホスト名をDNで表記する場合にLDAPはDCを使う(例:DC=example,DC=com
)のに対してTLSサーバ証明書 (X.509) はCNを使う(例:CN=*.example.com
)とか、ああまったくこんなことなら90年代にTCP/IPなんか蹴っ飛ばしてOSIがインターネットになっちゃえばよかったのにとは思いませんが、なんだか納まりの悪いことになっています。
参考文献
K. Zeilenga, Ed. (2006)
Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names
https://tools.ietf.org/html/rfc4514 (Google翻訳)
D. Cooper, et al. (2008)
Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile
https://tools.ietf.org/html/rfc5280 (Google翻訳)