javascript - 在服务器端检测客户端是否拒绝我的 TLS 证书

标签 javascript node.js ssl https error-handling

我正在 Node.js 中构建一个 HTTP 代理,它会尝试使用自签名证书拦截 HTTPS 连接。我正在使用裸机 http.Server,根据需要实例化我自己的 tls.TLSSocket 来升级套接字,当 CA 被客户端信任时,所有功能都运行良好.

如果客户端没有配置 CA,它显然会拒绝连接,并提示链中有自签名证书。

这就是它应该做的,但我想要一种方法来检测服务器端是否发生了这种情况,这样我就可以提示用户正确配置他们的客户端。

这有可能吗?似乎 TLS RFC ( https://www.rfc-editor.org/rfc/rfc5246#section-7.2.2 ) 有很多关于证书拒绝的错误警报消息,我希望涵盖这一点,但我看不到在 Node 中看到任何调试信息,即使使用 NODE_DEBUG =tls.

我真的很想订阅 TLS 错误警报事件,这样我就可以直接对其中的各种有趣案例使用react。我该怎么做?

最佳答案

通常你看到的只是客户端关闭了连接。一些客户端可能会发送警报,而另一些则不会 - 确切的行为取决于 TLS 堆栈。无论如何,您无论如何都无法从这个死连接中重定向客户端。

您可能会尝试使用纯 HTTP 提供一些初始页面,其中您使用由您的 CA 签名的证书从 HTTPS 资源中包含一些图像或类似内容。使用一些脚本,您可以检测客户端是否已成功加载图像,在后一种情况下,您可以显示有关需要安装某些证书的信息。

关于javascript - 在服务器端检测客户端是否拒绝我的 TLS 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52087413/

相关文章:

javascript - 为什么这个异步 Jasmine 测试失败?

javascript - MooTools:表单上的 "this"元素

Node.js 通过查询字符串传递参数

IIS 7 上托管的 WCF 无法验证消息的安全性

c# - asp.net 它自动运行我的 C# 方法

javascript - 使用参数作为属性

node.js - NodeJS为exec设置环境变量

node.js - 运行 node.js 的两个进程之间的通信

.htaccess url 使用 ssl 重定向重写

java - 用于安全 LDAP 身份验证绕过的 BlindSSLFactory 在生产环境中不起作用