3.服务端向客户端发送 Server Key Exchange 报文,其中携带了客户端用于生成 premaster secret 的安全参数。 可选,当 Certificate 报文中携带的信息无法支撑客户端生成 premaster secret 时发送 4.服务端向客户端发送 CertificateRequest 报文,索求客户端证书,其中包含了期望的证书类型、签名算法和CA列表。 可选,开启双...
标准部分可以从这里开始看:6. Alert,TLS 1.3 更多是对于Alert 协议扩展,这里简单对比一下TLS1.2的Alert内容,TLS 1.3 Alert 枚举定义如下: enum { close_notify(0), unexpected_message(10), bad_record_mac(20), record_overflow(22), handshake_failure(40), bad_certificate(42), unsupported_certificate(43)...
no_certificate_RESERVED: 为了兼容SSL3.0版本,TLS不再使用 bad_certificate: 证书签名认证失败 unsupported_certificate: 收到不支持的证书类型 certificate_revoked: 收到被废弃的证书 certificate_expired: 收到过期的证书 certificate_unknown: 除上述4种情况外,其他证书异常场景 illegal_parameter: 握手阶段报文的参数非...
6) bad_certificate:收到的证书是错误的。 7) certificate_expired:证书已经过期。 8) handshake_failer:握手过程失败。 9) no_certificate: 未提供证书 10) unsupported_certificate: 未支持的证书格式 11) certificate_unknown: 未知证书 2. TLS协议格式 TLS并不是一个新协议,它是SSL(准确的说是SSL v3)的强化...
TLS1_ALERT_RECORD_OVERFLOW 22 SEC_E_ILLEGAL_MESSAGE 0x80090326 SSL3_ALERT_DECOMPRESSION_FAIL 30 SEC_E_MESSAGE_ALTERED 0x8009030F SSL3_ALERT_HANDSHAKE_FAILURE 40 SEC_E_ILLEGAL_MESSAGE 0x80090326 TLS1_ALERT_BAD_CERTIFICATE 42 SEC_E_CERT_UNKNOWN ...
bad_certificate_status_response(113), unknown_psk_identity(115), certificate_required(116), no_application_protocol(120), (255) } AlertDescription; TLS 1.2 Alert 枚举定义: enum{ close_notify(0), unexpected_message(10), bad_record_mac(20), ...
SSL日志中诸如"OpenSSL: error:14094412: SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate"这样的错误,通常是由于不能处理服务器证书/私钥的浏览器导致的。比如古董级别的Netscape Navigator 3.x就不能处理长度不等于1024的RSA密钥。[译者注]:IE直到7.0都不支持大于1024位RSA密钥。
服务端回复 Server Hello + Certificate + Server Hello Done -> 终端响应 Client Key Exchange -> 服务器回复 Alert,错误描述是:Illegal Parameter-> 握手失败,终端报错。 关于TLS握手的详细流程下文会详讲,目前能拿到的有效信息就这么多了,剩下的就是如何从表面的一个个有效信息,层层突破,最终找到问题的根源。
如果使用了客户端认证,通过 CertificateVerify 消息来认证客户端。客户端会签署一个之前所有握手消息的hash值,这些握手消息包括 服务器的证书,ServerHello.random 。其中服务器证书确保客户端签署了和本服务器有关的绑定(即不能重放和别的服务器的握手),ServerHello.random 确保签名和当前握手流程绑定(即不能重放)。
警报协议(Alert Protocol)的职责是向对方发出警报信息,类似于 HTTP 协议里的状态码。比如 protocol_version 就是不支持旧版本,bad_certificate 就是证书有问题,收到警报后另一方可以选择继续,也可以立即终止连接。 记录协议(Record Protocol) 建立在可靠的传输协议(如 TCP)之上,为高层协议提供数据封装、压缩及加密等...