[12] error alert は、 TLS における誤りを通知するメッセージです。
[2] TLS Handshake protocol では、誤りを検出したら、相手に対してメッセージを送信します >>1。誤りには致死的なものと、そうでないものがあります。 fatal alert と定義されている条件に遭遇したら、接続を閉じる前に適切な alert を送信しなければなりません >>1。 alert level が明示的に規定されていない誤りについては、 誤りの送信者が fatal か否かを決定できます >>1。 alert を送信する場合で、 その直後に接続を閉じるつもりの場合は、 fatal alert level で alert を送信しなければなりません >>1。
[3] fatal alert message を送信または受信したら、直ちに接続を閉じます。 鯖およびクライアントは、失敗した接続に関するセッション識別子、鍵、秘密をすべて忘れなければなりません。 よって fatal alert によって終了した接続を再開してはなりません。 >>1
[4] alert level が警告の alert を送信または受信したら、通常は接続は通常通り継続できます。 受信者が接続を継続しないことにした場合は、接続を終える fatal alert を送信するべきです。 >>1
certificate_expired
alert は送信しません。 >>1[19] Firefox は証明書エラーで fatal alert を送った後、 RST
するようです。 Chrome は普通に FIN
で閉じるようです。
[6] error alert の種類には次のものがあります。
unexpected_message
(10
)bad_record_mac
(20
)decryption_failed_RESERVED
(21
)record_overflow
(22
)decompression_failure
(30
)handshake_failure
(40
)no_certificate_RESERVED
(41
)bad_certificate
(42
)unsupported_certificate
(43
)certificate_revoked
(44
)certificate_expired
(45
)certificate_unknown
(46
)illegal_parameter
(47
)unknown_ca
(48
)access_denied
(49
)decode_error
(50
)decrypt_error
(51
)export_restriction_RESERVED
(60
)protocol_version
(70
)insufficient_security
(71
)internal_error
(80
)user_canceled
(90
)no_renegotiation
(100
)unsupported_extension
(110
)inappropriate_fallback
(86
)user_canceled
(90
)certificate_unobtainable
(111
)unrecognized_name
(112
)bad_certificate_status_response
(113
)bad_certificate_hash_value
(114
)unknown_psk_identity
(115
)no_application_protocol
(120
)[8] close_notify
(0
) は closure alert に分類されていて、
error alert とは別の処理が規定されています。
[13] TLS を使うアプリケーション層プロトコルは、 TLS の接続が誤りにより閉じられた際の処理 (何らかの方法で復帰する、更に上位の層に誤りを通知するなど) を規定する必要があります。
[17] Web Security Context: User Interface Guidelines ( 版) <http://www.w3.org/TR/wsc-ui/#sec-tlserrors>
[18] OpenSSL (OpenSSL Foundation, Inc. 著, 版) <https://www.openssl.org/docs/manmaster/ssl/SSL_alert_type_string.html>