5

カスタムサブジェクト(、SERIALNUMBER = ...、)を使用して(私はCAです)証明書を作成して署名する必要があります。

これまでのところ、openssl構成ファイルを変更したので、件名にカスタムフィールドを含めることができます。

[ new_oids ]
SERIALNUMBER = 1.2.3.4.1333

問題は、そのような証明書に署名した後、新しいフィールドがその奇妙な数値形式で表示されることです-

C = FI
O = Maahanmuuttovirasto
1.2.3.4.1333 = 00REINIS00

通常のフィールド名で証明書を生成するには、openssl構成ファイルのどこで何を変更する必要がありますか?1.2.3.4.1333を「SERIALNUMBER」としてエンコードする必要があることを署名プロセスに伝えるにはどうすればよいですか。

ありがとう、ビーフ

4

1 に答える 1

5

それは実際にはまったくエラーではありません。証明書のサブジェクトに格納されるのは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」の値として正しく表示します。

于 2011-07-09T17:53:12.563 に答える