而现在比较多的内容就是:SSL_do_handshake() failed (SSL: **error:**141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking异常了。
示例如下:
2023/12/27 02:36:21 [crit] 13721#0: *2341389 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 184.105.247.194, server: 0.0.0.0:443
2023/12/27 05:56:24 [crit] 13722#0: *2354876 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 74.82.47.5, server: 0.0.0.0:443
2023/12/27 05:56:54 [crit] 13723#0: *2354905 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 165.227.76.114, server: 0.0.0.0:443
2023/12/27 05:56:54 [crit] 13717#0: *2354906 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 165.227.76.114, server: 0.0.0.0:443
2023/12/27 06:27:04 [crit] 13718#0: *2357602 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 87.236.176.148, server: 0.0.0.0:443
2023/12/27 06:49:57 [crit] 13721#0: *2359607 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 43.131.37.227, server: 0.0.0.0:443
2023/12/27 08:55:21 [crit] 13722#0: *2367813 SSL_do_handshake() failed (SSL: error:141CF06C:SSL routines:tls_parse_ctos_key_share:bad key share) while SSL handshaking, client: 212.102.40.218, server: 0.0.0.0:443
每天总是会有几个请求提示这个错误。那么这个错误是什么?我们的nginx有问题么?
2. 分析
我们将错误内容进行一个分解理解。
SSL_do_handshake() failed : SSL握手失败。那么ssl握手是什么?简单理解就是https的证书认证过程。确保网站内容请求和发送的数据是没有被串改的。
SSL: error:141CF06C:ssl的错误码是 141CF06C
SSL routines:tls_parse_ctos_key_share:错误发生在SSL链接顺序中的tls_parse_ctos_key_share验证阶段,客户端验证秘钥是否正确的阶段。
验证得到的结果是:bad key share 秘钥错误。
然后整个SSL握手就失败了。
最后client:客户端请求的IP地址。 server:服务器端的ip地址。
我们将问题一点点拆分之后。就需要研判了。SSL证书为什么会错误?
我们的httpsSSL证书配置不准确,证书有问题。
客户端访问时得到的SSL证书有串改。
那么,这个问题是发生在客户端还是发生在服务端?
很简单,检测你的错误日志是否非常多的[crit]异常。我们使用多个不同的浏览器访问我们网站是否会出现SSL错误。
如果不是,那么就说明访问客户端出现了问题。
PS 1:例如我的每天500个IP访问,只有4~5个出现了crit异常。
说明是客户端请求的问题。
2.1 客户端
如果是客户端出现了问题。那么客户端哪种情况会出现这些异常?通过搜索相关资料得知有以下多种情况会出现客户端证书错误异常:
客户端运行的浏览器严重过时了。老版本浏览器中对SSL证书的验证签名不通过。(几率比较低)
客户端是一个攻击软件,它在使用软件扫描服务器的漏洞。
客户端所在的网络,有严格的防火墙机制。限制了网站正确被访问。(可以参考国内网络屏蔽国外网站。)
上面的第1和第3的情况我们无法解决。而第2种情况,代表了我们的服务器正在受到漏洞扫描攻击。
可以评判多个ip的访问重复情况。进行合理的屏蔽就可以了。
3. ip直接屏蔽
一些频繁访问网站,然后出现SSL错误的ip地址。
4.结论
最后,让我们回到这个问题本身来。如果部分IP一直访问触发这个错误,那么可以屏蔽该IP的访问。
不进行处理也不影响我们的正确使用。