GeneralizedTime

GeneralizedTime

[6] GeneralizedTime は、 ASN.1 で日時を表す構文の1つです。

[9] ASN.1 で定義されている他に、 LDAP や PKIX でプロファイルが定められています。

仕様書

構文

[7] 年、月、日、時、分、秒、時間帯で構成される文字列です >>2。

[11] 年は、4桁のASCII数字列です >>2。

[12] 月は、 1 から 12 の範囲の2桁のASCII数字列です >>2。

[13] 日は、 1 から 31 の範囲の2桁のASCII数字列です >>2。

[14] 時は、 0 から 23 の範囲の2桁のASCII数字列です >>2。

[15] 分は、 0 から 59 の範囲の2桁のASCII数字列です >>2。

[16] 秒部は、0 から 60 の範囲の2桁のASCII数字列です。 60 は、閏秒です。 >>2

[8] LDAP では、分と秒または秒を省略できます >>2。

[5] PKIX では、分と秒を含めなければなりません >>1。

[17] 小数部は、 . または , の後に、 1桁以上の ASCII数字列で表します >>2。 小数部は、時、分、秒のうち省略されなかった最後のものの小数部を表します >>2。

[3] LDAP では、 小数部を省略できます >>2。 PKIX では、小数部を含めてはなりません >>1。

[18] 時間帯は、UTC を表す Z (大文字) か、 時差のいずれかです >>2。 LDAP では、 Z を使うべきです >>2。 PKIX では、 Z を使わなければなりません >>1。

[4] 必ずしも明確ではありませんが、 PKIX では +0000 は禁止されているようです。

[19] 時差は、 + または - の後に、時と分を続けたものです。 分は、省略できます。 >>2

[10] ASN.1 では、時間帯は省略でき、地方時を表します。 LDAP >>2 と PKIX >>1 では、時間帯を省略してはなりません。

[20] 適当な日や時を表さない組み合わせは、非妥当と考えるべきです >>2。

識別子

[21] オブジェクト識別子 1.3.6.1.4.1.1466.115.121.1.24 は、 LDAP 版 Generalized Time を表します >>2。

文脈

実装

[22] OpenSSL に秒の小数部を与えて証明書を作成すると、 秒の小数部のついた GeneralizedTime が生成されます。 ASN.1 的には間違っていませんが、 PKIX 的には不適切であり、実装によってはそのような証明書を受け入れません。

[24] OpenSSL accepts a certificate which has a fractional validity · Issue #2620 · openssl/openssl () https://github.com/openssl/openssl/issues/2620

[25] openssl year 2050 problem - verify does not work starting in 2050. · Issue #4915 · openssl/openssl () https://github.com/openssl/openssl/issues/4915

[26] 143334 - Support GeneralizedTime option in certificate validity field () https://bugzilla.mozilla.org/show_bug.cgi?id=143334

[27] gnutls fails to reject certificates with Generalized time prior to 2049 (#135) · Issues · gnutls / GnuTLS · GitLab () https://gitlab.com/gnutls/gnutls/issues/135