Skip to content
Go back

【归档文章】Nginx 学习(二)处理用户仅使用 IP 访问时服务器返回 SSL 证书泄露域名等问题

| 0 Views Edit page

关于 Nginx 的学习笔记。

注:这篇文章是从旧的博客系统中迁移过来的、我觉得还存在价值的文章。但是由于时间关系,可能已经不再是最佳实践,请仅作参考。

给网站套上 Cloudflare 防止被打和缓存部分静态文件应该是常规操作了,但是想起来之前好像见到过的帖子:第一次知道 HTTPS 会暴露服务器 IP,在新的服务器上试验了一下发现在访问 https:// 服务器 IP 的时候真的会返回 Nginx 配置中的第一封 SSL 证书而泄露域名,在这种全网扫 IP 成本极低的年代真的是很危险…于是还是决定稍作配置以排除掉这个危险因素。


1、80 端口常规配置

在用户用 IP 直接访问时返回 500 错误。

    # ========= 基础配置 =========
    # 禁止 IP 直接访问
    server {
        listen      80;
        listen      [::]:80;
        server_name _;

        location / {
            return      500;
        }
    }

直接访问 http:// 服务器 IP:80 端口效果:
配置前的访问效果

2、443 端口配置

参考文章:【小教程】Nginx 默认拒绝发送证书设置教程

    # 防止发送 SSL 证书
    server {
        listen      443 ssl http2 default_server;
        server_name _;

        ssl_protocols           TLSv1.2 TLSv1.3;
        # 启用拒绝 TLS 握手
        ssl_reject_handshake    on;
        # SSL Session 缓存,不设置的话无缓存配置不生效
        ssl_session_cache       shared:SSL:10m;
        ssl_session_timeout     10m;

        # log 位置自行替换
        access_log  /rab/log/nginx/access.log;
    }

这样配置之后的访问效果:
配置后的访问效果
ERR_SSL_UNRECOGNIZED_NAME_ALERT 就是我们想要的效果。

至此配置结束。


Edit page