ssl - 没有 ssl 证书的域重定向到不同的 ssl 域

标签 ssl nginx

我在 Digital Ocean droplet(使用 nginx)上设置了两个域。我已经在其中一个(domain1)中安装了一个 SSL 证书,并且那个证书一切正常。第二个域 (domain2) 不需要 SSL 证书,但如果我尝试访问 https://domain2正在向我显示 domain1 的内容并给我一个证书错误(此页面不安全)。

我理解证书错误,但我不想在 https://domain2 中显示 domain1 的内容

是配置问题吗?

最佳答案

nginx 始终有一个默认服务器,当server_name 不匹配时使用该服务器。如果您只有一个带有 listen 443 的服务器 block ,那么它就是所有 https 连接的隐式默认服务器,而不管服务器名称如何。

您需要为 https 连接设置一个显式的catch-all 服务器,或者将listen 443 ssl 添加到现有的server block 充当catch-all 服务器。

您可以重复使用相同的证书文件,如果有人尝试使用它,您将继续收到证书错误,但至少您的其他域不会暴露。

例如:

ssl_certificate     /path/to/crt;
ssl_certificate_key /path/to/key;    

server {
    listen 443 ssl;
    server_name domain1;
    ...
}
server {
    listen 443 ssl default_server;
    return 403;
}

参见 this documentthis document了解更多。

关于ssl - 没有 ssl 证书的域重定向到不同的 ssl 域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42481729/

相关文章:

apache - 在 Azure 上托管的 Red Hat 6 中安装通配符 SSL 证书

delphi - 如何使用 TIdHTTPServer 和 OpenSSL 在同一端口上支持 SSL 和非 SSL 流量?

ruby-on-rails - 如何让 SSL 在 Nginx 上的 Rails 中工作?

nginx - 在 Phusion Passenger 后面运行一个 Go 网络服务器

nginx - Nginx "large_client_header_buffers"指令最大大小的含义

apache - 已安装 ssl 但不安全

google-app-engine - Google App Engine 自定义域未激活 Google 管理的 SSL

nginx - 如何配置 Docker 端口映射以使用 Nginx 作为上游代理?

http - nginx 状态码 200 和 304

javascript - 使用 sc-server 代理 HTTPS 请求