答案1
如果您的服务器使用较旧的协议(没有 SNI)进行联系https
,或者甚至使用其 IP 地址而不是域名进行联系,Nginx 将选择默认server
块并使用与其关联的证书。
您看到的测试结果只是识别哪个server
块是默认块。
您可以通过使用该属性标记其中一个server
块(用于监听https
连接)来选择 Nginx 在这些情况下应使用哪个证书default_server
。
例如:
server {
listen 443 ssl default_server;
ssl_certificate ...;
ssl_certificate_key ...;
...
}
您甚至可以选择通过声明拒绝这些连接return 444;
,但您仍然需要有效的证书来首先协商连接。
答案2
当浏览器与 https://< 中的服务器对话时服务器名称> 交易中,第一步是服务器显示其证书,以便浏览器检查服务器页面是否来自其声明的来源。如果 <服务器名称> 位于服务器显示的证书中,并且该证书由浏览器信任的机构签名。
浏览器用来检查服务器名称的字段不是中国(通用名称)正如预期的那样。由于历史原因,浏览器实际上会检查名称是否在“主题备用名称“字段。也就是说,如果您使用的证书中没有“主题备用名称”列表中的服务器名称,则浏览器在尝试访问该名称时将收到错误。
因此,如果您想为某个网站使用不包含其他网站信息的证书,则必须使用为每个服务站点提供不同的证书由同一主持人。