服务器与部署

Nginx 配置 非域名 443 端口的自签证书

JACIN1 分钟阅读
AI 摘要

这是一篇面向 Nginx HTTPS 默认入口的防探测配置笔记,目标是处理直接通过服务器 IP 访问 443 端口时可能暴露真实站点证书信息的问题。做法先使用 OpenSSL 生成一个有效期较长、CN 设置为 AccessDenied 的自签证书,并把生成的 fake.crt 与 fake.key 放到 Nginx 可读取的位置。随后在 default 配置中声明同时监听 80 和 443 的 default_server,用 server_name _ 承接未匹配到具体域名的请求,并将该默认虚拟主机绑定到这张“假证书”。这样扫描器或访问者如果不带正确域名访问 IP,在 TLS 阶段看到的不是生产站点证书,而是自签证书中的 AccessDenied;连接建立后,Nginx 再通过 return 444 直接断开请求。文章还给出一个验证思路:到 Censys 按 IP 搜索,检查公开扫描结果中是否仍能反查到真实域名。该配置适合希望降低证书透明度、互联网扫描或 IP 反查带来的域名暴露风险的运维与站点维护者,但它只针对默认入口和证书展示层面,不能替代完整的访问控制与资产隐藏策略。

生成自签证书:

text
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/nginx/fake.key -out /etc/nginx/fake.crt \
-subj "/CN=AccessDenied"

vim default

text
server {
    listen 80 default_server;
    listen 443 ssl default_server;

    # 1. 匹配所有直接通过 IP 访问的请求
    server_name _;

    # 2. 【关键】给这些人看“假证书”
    # 这样他们就看不到 jacin.me 了,只能看到 "AccessDenied"
    ssl_certificate /etc/nginx/fake.crt;
    ssl_certificate_key /etc/nginx/fake.key;

    # 3. 建立连接后,直接挂断 (返回 444 状态码)
    return 444;
}

这样可以通过IP 访问无法反查到你的真实域名。 可以去 Censys 搜 IPsearch.censys.io 输入你的 IP

评论

还没有评论,来发第一个吧