ssl - 我可以检测浏览器支持的 SSL 版本吗?

标签 ssl https

我想向浏览器的最高加密级别为 SSLv3 的客户显示一条消息。我可以针对 SSLv3 及更低版本的浏览器设置吗?客户端或服务器代码?我们将允许较低版本的 SSL 在一定的宽限期内使用我们的网站。在此宽限期内,我们希望仅向浏览器设置为 SSL3 或更低版本的用户显示一条消息。

最佳答案

不容易。在 SSL 握手进行之前,无法检测到浏览器支持的 SSL 版本,即使在浏览器使用 SSLv2 握手以允许动态版本协商时也是如此。如果检测到不受支持的版本,您将无法发回消息,因为握手失败并且连接将在您发送任何消息之前关闭。但是,SSL 本身有一个在握手期间发送的错误数据包,它可以指定版本不匹配错误。

在你自己的代码中你能做的最好的是在服务器端支持所有的SSL版本,让客户端正常完成一次握手,然后检测实际使用的是哪个版本,如果SSL版本太低则发回消息.

或者,您可以只启用 TLSv1 或更高版本,而根本拒绝让旧客户端连接。除非浏览器决定检测 SSL 版本不匹配错误并显示它自己的漂亮消息,否则他们不会收到好的错误消息。

关于ssl - 我可以检测浏览器支持的 SSL 版本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24896708/

相关文章:

django - 带有 django 和 mod_wsgi 的基于 SSL 的虚拟主机

Java SSLException : hostname in certificate didn't match

node.js - 代理后面的 nodejs 的简单示例

javascript - 使用来自 GoDaddy 的 SSL 证书设置 Node https 服务器

linux - Apache SSL 证书配置 - sec_error_inadequate_cert_type

Golang TLS 握手错误 - "first record does not look like a TLS handshake"?

CAS 服务上的 javax.net.ssl.SSLHandshakeException

c# - 使用 C# 以编程方式创建并信任 SSL 证书?

google-app-engine - 无法插入提供的 SSL 证书

http - 没有 "http|https"的网址