目前,我正在使用nginx作为我的Web服务器。不久前,我发现了有关服务器名称指示(SNI)的信息,这非常有帮助,因为我有几个从服务器运行的域(包括所有子域)。

因此,我退出了,我在主域上放了一个ssl证书,在服务器上放了两个子域。效果很好,没问题:D

(之所以我不仅仅使用通配符证书,是因为我正在使用http://www.startssl.com/,它为我提供了免费的ssl证书,但是对于通配符,我必须付费,而我的服务器对此并不那么重要,这只是一个爱好项目)

接下来的问题:
如果有人浏览到一个不存在的(子)域,或者没有安装证书的域,那么他们在该浏览器中当然会收到一个警告,因为nginx提供了默认的证书,而该证书当然与那个不存在的不匹配域。
我想知道,是否可以告诉nginx sni系统是否要求输入不存在的域名,只是终止连接或执行某些操作,而不是出现名称不匹配警告,否则还会出现其他警告在浏览器中说该站点不存在(即使存在这样的系统...)

我知道一个解决方案:删除通配符dns记录,这样不存在的确将不存在,但这对已存在但对https不存在的那些没有帮助。同样,我不能轻易添加一个新的子域,也必须为其编辑dns设置。 (我知道,我很懒,但是哪个书呆子不是:P)

哦,如果这种事情不可能实现,那么我只需要按照现在的方式生活,没什么大不了的,但这会使我的服务器不那么“酷” xd(对不起,我只是一个随机技术,业余爱好者)。

最佳答案

只是不要将SSL用于子域:)
例如

server {
    listen 80;
    listen 443;
    server_name example.com;
    ...
}
server {
    listen 80;
    server_name *.example.com;
    ...
}

关于ssl - 有没有一种方法可以禁止使用SNI时未连接到未获得证书的某些子域的https连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28680403/

10-16 23:21