security - 带有 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 连接?
解决方案
推荐阅读
- python - NetCDF get_dims 太多值无法解包
- jmeter - Is there a way to run only one test from the testplan using Taurus/JMeter?
- c# - 有条件地遍历 XML 文件,仅当元素等于值时才读取数据
- php - 在 PHPUnit 测试中模拟 env()
- javascript - HTML\CSS\JavaScript:如何动态构建菜单?
- python - 在 txt 文件中查找每个句子中的最后一个单词
- javascript - 每个文件的输出路径/文件名
- java - JAVA JPA:使用注释在属性上连接两个实体
- linux - 为什么yum包可以列出但不能删除?
- php - Laravel php - 如何在保存到 db 之前解码 '?/\+-" 并在之后对其进行编码?