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

时间:2017-02-27 09:13:05

标签: ssl nginx

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

我理解证书错误,但我不希望域名1的内容显示在https://domain2

这是配置问题吗?

1 个答案:

答案 0 :(得分:0)

nginx始终有一个默认服务器,即server_name不匹配时使用的服务器。如果您只有一个带有listen 443的服务器块,那么无论服务器名称如何,这都是所有https连接的隐式默认服务器。

您需要为https个连接设置明确的 catch-all 服务器,或者将listen 443 ssl添加到现有的server块中以充当 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