首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当SSL证书不存在时,使Nginx失败,而不是跳转到仅可用的证书。

问当SSL证书不存在时,使Nginx失败,而不是跳转到仅可用的证书。
EN

Server Fault用户
提问于 2013-11-12 17:12:08
回答 3查看 1.2K关注 0票数 0

我在服务器上有很多网站,都是通过nginx托管的。一个站点有证书,另一个站点没有证书。下面是两个站点的示例,使用(相当准确)的真实配置表示:

代码语言:javascript
复制
server {
    listen 80;
    server_name ssl.example.com;
    return 301 https://ssl.example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name ssl.example.com;
}

server {
    listen 80;
    server_name nossl.example.com;
}

SSL对ssl.example.com很好。如果我访问http://nossl.example.com,效果很好,但是如果我尝试访问https://nossl.example.com (注意SSL),我会收到关于ssl.example.com证书的丑陋警告。

根据它的声音,因为ssl.example.com是唯一监听端口443的站点,所以所有请求都被发送到它,而不管域名如何。

我能做些什么来确保Nginx服务器指令只响应它负责的域吗?

EN

回答 3

Server Fault用户

发布于 2013-11-13 02:58:54

对主机使用不同的IP地址,不应在SSL上回答,并确保nginx只侦听端口443上的适当IP地址。

票数 1
EN

Server Fault用户

发布于 2013-11-12 19:21:14

真正隔离ssl站点( sans多主机/通配符ssl cert )的唯一方法是向您的框中添加辅助公共ip(必须通过提供程序进行请求)。

然后,通过dns将每个站点/子域放到自己的ip上。这样,一些域名:443将被打开,有些将旋转到超时(通过iptables使用DROP )。

票数 0
EN

Server Fault用户

发布于 2013-11-12 19:53:36

不幸的是,域(通过Host报头)是加密有效负载的一部分。因此,nginx在提交证书之后才知道它用于什么域。这是SSL的技术限制,而不是nginx。

http://en.wikipedia.org/wiki/Server_名字_指示可能会有所帮助,但XP上的IE用户(仍占互联网用户的相当大比例)无法使用它。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/554499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档