RFC 3280では規定外になりますが識別名にNumericStringを含む証明書を作ってみて、そのPKCS#12を作ろうとOpenSSLで読み込ませてみたら見事にエラーになりました。
前のブログでOpenSSLでNumericStringを識別名に含む証明書を読み込むとエラーになると書きましたが他はどうなのか(別の調査のついでに)調べてまとめてみたのが以下です。
| DirectoryString Type | Tag | OpenSSL サポート※1 | RFC3280 Issuer※2 | RFC3280 Subject※3 |
|---|---|---|---|---|
| UTF8String | 0c | ○ | ○ | ○ |
| NumericString | 12 | × | × | × |
| PrintableString | 13 | ○ | ○ | ○ |
| TeletexString | 14 | ○ | ○ | ○ |
| VideotexString | 15 | × | × | × |
| IA5String | 16 | ○ | × | ○ |
| GraphicString | 19 | × | × | × |
| VisibleString | 1a | × | × | × |
| GeneralString | 1b | × | × | × |
| UniversalString | 1c | ○ | ○ | ○ |
| BMPString | 1e | ○ | ○ | ○ |
※1: OpenSSL 0.9.8hで証明書識別名で使われているものを読み込んだ際、エラー終了しなければ「○」
※2: RFC 3280 4.1.2.4でIssuerに使ってよいとしているDirectoryString Typeであるか
※3: RFC 3280 4.1.2.6 SubjectではIssuerのものに加え過去との互換性からメールアドレスにIA5Stringをつかってもよい。
X.680で定義されている文字列を扱うプリミティブをリストにしました。OpenSSLは0.9.8hで確認しました。RFC 3280でサポートされているDirectoryString Typeしかサポートしてないんですね。
読めなかったときのエラーはこんな感じです。
% openssl x509 -inform DER -noout -txt -in EE-ECOM-XMLDN-DS-VIDEOTEX-ASCII.cer
unable to load certificate
24264:error:0D07808C:asn1 encoding routines:ASN1_ITEM_EX_D2I:mstring wrong tag:tasn_dec.c:228:Type=ASN1_PRINTABLE
24264:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:749:Field=value, Type=X509_NAME_ENTRY
24264:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:710:
24264:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:710:
24264:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:749:Field=issuer, Type=X509_CINF
24264:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:749:Field=cert_info, Type=X509