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

时间:2018-08-29 23:39:09

标签: javascript node.js ssl https error-handling

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

如果客户端未配置CA,则它显然会拒绝连接,并会抱怨该链中有一个自签名证书。

这就是应该做的一切,但是我希望有一种方法可以从服务器端检测到这种情况,因此我可以提示用户正确配置其客户端。

是否可以这样做?似乎TLS RFC(https://tools.ietf.org/html/rfc5246#section-7.2.2)上有很多关于证书拒绝的错误警告消息,我希望能解决这一问题,但是即使使用{{ 1}}。

真的,我想订阅TLS错误警报事件,因此我可以直接对其中的各种有趣情况做出反应。我该怎么办?

1 个答案:

答案 0 :(得分:1)

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

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