首页 > 解决方案 > 带有 TLS 客户端身份验证的 nginx... 错误响应未经过相互身份验证?

问题描述

我玩弄了 nginx 和双向 TLS 身份验证。为此,我将 nginx 服务器配置为使用 config 参数实际使用客户端身份验证:

ssl_verify_client on;

它有效,但我对终止过程有疑问。

如果我向例如 https://localhost 发出 get 请求并ssl_verify_client on;已设置,即使我没有提供有效的客户端证书,我也会收到 http 响应:

400 Bad Request 未发送所需的 SSL 证书

对我来说,TLS 连接在 TLS 握手时终止是有道理的。当连接未相互验证时,为什么我会收到 http 响应?

我还阅读了 RFC 5246,它基本上说可以这样做(设计师选择):

然而,TLS 标准并没有指定协议如何通过 TLS 增加安全性。关于如何启动 TLS 握手以及如何解释交换的身份验证证书的决定留给了在 TLS 之上运行的协议的设计者和实现者的判断。

在应用层而不是传输层上做这件事有很好的论据吗?是否有可能在不使用代理(例如 HAProxy)的情况下提前终止 TLS 连接?

标签: securitysslnginxssl-client-authenticationtransport-security

解决方案


推荐阅读