御卓
·
·
最初发布于 ocean.zhuo.one

Nginx 1.19+ 配置 ssl_reject_handshake 拒绝源站IP访问SSL握手请求

使用VPS搭配LNMP环境建站,特别是多个域名的情况下,我们一般在Nginx端的default配置文件增加 return 444; 来避免网站源站IP泄露/跨站串站问题。

在以前的Nginx版本中,由于配置https访问的443端口必须需要一个SSL证书,Nginx才能通过运行,存在通过SSL握手导致源站信息泄露的风险。尽管可以通过提供一个无效的自签名SSL证书应付,不过仍然有点不太安全。

最近研究了新的Nginx版本配置,发现 Nginx 1.19.4+ 新增了一个 ssl_reject_handshake 配置项,可以直接切断拒绝SSL握手请求,类似于返回444请求。而且它不需要强制要求SSL证书,这样也就无法通过https握手请求获取服务器的SSL信息了。

之前默认安装的是1.18版本的Nginx,这次再通过PPA的方式升级一下,截至本文撰写时,该PPA的最新版本是1.20.2,实测可以通过 apt-get install 的方式直接直升。

sudo add-apt-repository ppa:ondrej/nginx
sudo apt-get update
sudo apt-get install nginx

修改default默认监听的配置文件:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 444;
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    server_name _;
    ssl_reject_handshake on;
}

通过浏览器访问,已经直接提示 ERR_SSL_UNRECOGNIZED_NAME_ALERT 错误,也没有询问是否信任并建立SSl握手的提示,成功配置。

bookmark_add
添加收藏
评论
登录后评论
社区准则 博客 联系 反馈 状态
主题