それは実際にはまったくエラーではありません。証明書のサブジェクトに格納されるのはDistinguishedNameです。Cf. RFC 5280
TBSCertificate ::= SEQUENCE {
version [0] Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
extensions [3] Extensions OPTIONAL
-- If present, version MUST be v3 -- }
したがって、件名はですName
。これは次のように定義されます。
Name ::= CHOICE { -- only one possibility for now --
rdnSequence RDNSequence }
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::= SET SIZE (1..MAX) OF AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }
AttributeType ::= OBJECT IDENTIFIER
AttributeValue ::= ANY -- DEFINED BY AttributeType
ご覧のとおり、サブジェクトは一連のRelativeDistingsuishedNamesで構成されており、それぞれがOIDと割り当てられた値のペアを表します。これは、証明書'SERIALNUMBER'のどこにも保存されず、oidの値1.2.3.4.1333のみが保存されることを意味します。これらのOIDを意味のあるものとして解釈するのはアプリケーション次第であり、ほとんどのアプリケーションが知っていて、「C」、「O」、「OU」、「CN」などの文字列を使用して表す一般的なOIDがいくつかあります。 (RFC2253またはRFC1779を参照)。
ただし、「SERIALNUMBER」はデフォルトではOpenSSLには認識されません。実際、「SERIALNUMBER」をnew_oids
自分で追加しています。このため、OpenSSLは、OID自体を出力する以外に「SERIALNUMBER」を表す方法を認識していません。ただし、「SERIALNUMBER」(IIRC Windows / IE)を認識している他のソフトウェアは、これを「SERIALNUMBER」の値として正しく表示します。