nginx返回应该没有证书的子域的SSL证书

时间:2017-11-03 23:51:07

标签: ssl nginx https configuration server

我有一个管理一些域和子域的nginx服务器。有些子域具有自己的SSL证书,它们工作正常。问题是,如果我尝试打开blablabla.mydomain.com(此子域未在nginx中配置),则firefox会向我显示错误"连接不安全"和"证书仅对xyz.mydomain.com有效。" (此域配置了SSL并且运行良好)

当我打开根域mydomain.com时也会发生同样的情况。然后服务器还返回xyz.mydomain.com的证书,该证书被firefox拒绝。

我只希望nginx返回我明确配置HTTPS的域/子域的SSL证书。根据我的理解,我的配置应该正是这样做的。

我配置了所有我的https子域名:

server {
    listen 443 ssl;
    server_name xyz.mydomain.com;
    root /var/www/xyz.mydomain/;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/xyz.mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/xyz.mydomain.com/privkey.pem;

    ...
}

根域(应该没有SSL)配置如下:

server {
    listen 80;
    server_name mydomain.com;
    return http://some-redirection.com;
}

此域没有SSL服务器块。也不存在其他不存在的子域。那么为什么这些情况下nginx会返回xyz.mydomain.com的证书?

我在服务器配置中没有使用任何通配符。有没有办法调试这个?我的意思是,nginx总是为每个未配置的域/子域返回xyz.mydomain.com的证书。为什么没有另一个配置和工作证书?

我使用的是带有nginx 1.4.6的Ubuntu 14.04服务器

如果您需要有关我的配置的更多信息,请告诉我

编辑:我想我知道为什么我的配置不起作用。使用https时,客户端也会对域名进行加密,这会导致nginx尝试所有可用的服务器定义。什么时候找不到它会返回最后一个? xyz.mydomain.com似乎是最后一个(按字母顺序排列)

有没有办法避免这种情况?我是否必须为每个其他子域创建一个ssl证书?

0 个答案:

没有答案