gpt4 book ai didi

ssl - nginx ssl 拒绝不匹配的 server_name 请求

转载 作者:行者123 更新时间:2023-12-04 22:41:30 31 4
gpt4 key购买 nike

server {
lerver {
listen 443 ssl;
server_name proxy.test.com;

ssl_certificate sni.crt;
ssl_certificate_key sni.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;

location / {
root html;
index index.html index.htm;
}
}

server {
listen 443 default_server ssl;
server_name test.com;

ssl_certificate test-cn.crt;
ssl_certificate_key test-cn.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;

location / {
root html;
index index.html index.htm;
}

}

我想用 ssl 配置 nginx 以支持 SNI 请求(来自客户端的 ClientHello 中的 server_name 指令),拒绝与不匹配的 server_name SNI 请求的握手,并为非 SNI 请求提供默认证书(没有 server_name 指令的 ClientHello)。

通过以上配置,我可以让 nginx 响应 proxy.test.com 的 SNI 请求。但是对于 SNI 请求为 invalid-domain.com 的 ClientHello 和没有 SNI 请求的 ClientHello,使用默认服务器 block 。如何让 nginx 拒绝对 invalid-domain.com 的 SNI 请求,同时为非 SNI 请求设置默认服务器 block ?

最佳答案

我遇到了 nginx 的这个新功能,如果请求的 server_name 与您在服务器指令中列出的内容不匹配,它甚至会在发送 server_hello 之前丢弃请求。我认为这将有助于完成您想要做的事情。除非 SNI 与 proxy.test.com 匹配,否则以下配置应将所有请求丢弃到 443。

server {
listen 443 ssl;
ssl_reject_handshake on;
}
server {
listen 443 ssl;
server_name proxy.test.com;

ssl_certificate sni.crt;
ssl_certificate_key sni.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;

location / {
root html;
index index.html index.htm;
}
}
链接到文档。
ssl_reject_handshake

关于ssl - nginx ssl 拒绝不匹配的 server_name 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49744713/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com