Nginx配置避免IP访问时证书暴露域名

温馨提示:文章已超过1522天没有更新,可能存在链接失效,相关教程仅供参考

前言

当站点有开启https的时候,如果IP没有限制,直接通过https://ip,访问的话是可以直接获取到网站域名证书信息,这样攻击者就会知道你这台服务器绑定了什么域名了,如下图

image.png

解决方案

在Nginx默认站点设置并配置一个不含正确域名的证书(这个配置比较麻烦还得去生成一个证书,服务器多的话还得一个个去生成这个方案不现实),其实Nginx开发者有考虑到这个问题了,在新版的Nginx版本中已经有完美的解决方案,新增了配置项ssl_reject_handshake,用于拒绝握手,也不会提供显示证书。

在Nginx配置目录下新增一个默认站点,新增如下配置项

server {
    listen 443 default_server;
    server_name _; 
    # 直接拒绝握手
    ssl_reject_handshake on;
}

配置后重新加载Nginx服务,再尝试 IP 访问,会发现浏览器报了 ERR_SSL_UNRECOGNIZED_NAME_ALERT 的错误,也看不到证书信息。

image.png

© 除非注明,否则均为阿豪运维笔记原创文章,转载或复制请以超链接形式并注明出处

取消
微信二维码
微信二维码
支付宝二维码