全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 2805|回复: 23

【小教程】nginx 默认拒绝发送证书设置教程

[复制链接]
发表于 2021-6-17 22:48:47 | 显示全部楼层 |阅读模式
本帖最后由 iks 于 2021-6-17 22:52 编辑

在 nginx 未指定其 SSL 连接监听端口的 default_server 时,nginx 会默认发送第一张 SSL 证书给客户端——即使客户端给的 SNI 为空或不属于本机任何一个配置了的 server_name,这会导致因证书被扫描器探知而导致某种意义上的信息泄露。
在 nginx 1.19.4 及 OpenSSL 1.1.1i 之前的解决方案一般是在 default_server 里指定一个自签的证书,但这样不够美观(个人的 OCD 症状)。好消息是,现在 nginx 可以直接在 server 块内设置 ssl_reject_handshake,即终止 SSL 握手阶段,避免证书的发送。
以下是 nginx server 区块的设置,【要求 nginx 版本 1.19.4 以上、(编译进 nginx 的)OpenSSL 版本 1.1.1i 以上,具体请执行 nginx -V 查看 nginx version 和 built with OpenSSL 的值】

  1. server
  2. {
  3.         listen 443 ssl http2 default_server;
  4.         server_name _;
  5.         ssl_protocols TLSv1.2 TLSv1.3;
  6.         ssl_reject_handshake on; //启用拒绝 TLS 握手
  7.         ssl_session_cache shared:SSL:10m; //这个必须设置,不指定 ssl_session_cache 的话,会导致 Session resumption (caching) 验证失败
  8.         ssl_session_timeout 10m;

  9.         access_log  /www/wwwlogs/access.log;
  10. }
复制代码


不用指定证书。改完保存然后重启 nginx 即可,效果如下:

  1. root@debian:~# curl -v https://36.27.222.72
  2. * Expire in 0 ms for 6 (transfer 0x5617b4965fb0)
  3. *   Trying 36.27.222.72...
  4. * TCP_NODELAY set
  5. * Expire in 200 ms for 4 (transfer 0x5617b4965fb0)
  6. * Connected to 36.27.222.72 (36.27.222.72) port 443 (#0)
  7. * ALPN, offering h2
  8. * ALPN, offering http/1.1
  9. * successfully set certificate verify locations:
  10. *   CAfile: none
  11.   CApath: /etc/ssl/certs
  12. * TLSv1.3 (OUT), TLS handshake, Client hello (1):
  13. * TLSv1.3 (IN), TLS alert, unrecognized name (624):
  14. * error:14094458:SSL routines:ssl3_read_bytes:tlsv1 unrecognized name
  15. * Closing connection 0
  16. curl: (35) error:14094458:SSL routines:ssl3_read_bytes:tlsv1 unrecognized name
复制代码


(ip 事假的,不用测)
可以看到,当客户端试图使用 https 方式访问此机器上不存在的 host 时,TLS 握手失败,返回值默认已经没有证书。

这样配置省了点时间(签自签证书的时间),要说更大的意义的话,就是在不考虑 no SNI 下的合规吧。

鸣谢
t.me/lalalaji
发表于 2021-6-17 22:49:55 | 显示全部楼层
自签个假证书完事
发表于 2021-6-17 22:50:20 | 显示全部楼层
mark 技术教程要顶
发表于 2021-6-17 22:53:14 | 显示全部楼层
能解释下这个的深层次的意义吗
我们平时不是默认直接http 走80吗
发表于 2021-6-17 22:54:49 | 显示全部楼层
jqbaobao 发表于 2021-6-17 22:49
自签个假证书完事

有毒吧你,楼主又不是没介绍自签证书
 楼主| 发表于 2021-6-17 22:55:03 | 显示全部楼层
oilbit 发表于 2021-6-17 22:53
能解释下这个的深层次的意义吗
我们平时不是默认直接http 走80吗


主题帖第一行
发表于 2021-6-17 22:55:05 | 显示全部楼层
这个不错,不用在自签个证书了
发表于 2021-6-17 22:55:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2021-6-17 22:59:21 | 显示全部楼层
nginx-1.20.0 stable version 发布就用上了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2026-5-11 06:38 , Processed in 0.071779 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表