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 搜 IP 去 search.censys.io 输入你的 IP
评论
还没有评论,来发第一个吧