AMH 社区首页
AMH社区 - 开放自由有价值的社区
[综合话题] 关于AMH 5.3版本里SSL的问题 |
|
---|---|
l12ab |
l12ab 发表于 2017-04-06 18:54:56
比如我建立了3个虚拟主机,标识分别为A、B、C,域名分别为a.com, b.com, c.com
然后给A主机添加SSL支持,访问https://a.com 一切如我所期待。 但是如果访问https://b.com 或者 https://c.com ,则也会响应请求,并且提示证书不正确,因为此时响应了a.com的证书。这不是我所想要的。 我并不想https://b.com和https://c.com 能够被访问,此时对这两个域名不应该响应443端口。 看了一下服务器上生成的配置文件,有个A-https.conf,配置了一个server段,里面是A的ssl信息。对,是单独的一个server。所以导致了上述问题。 似乎,正确的做法是把80和443写在一个server里,类似官方文档的做法,这样访问https://b.com 就没有任何响应了。 server { listen 80; listen 443 ssl; server_name www.example.com; ssl_certificate www.example.com.crt; ssl_certificate_key www.example.com.key; ... } 希望接下来能改进一下。
点赞,加油! (0分)
2017-04-06 18:54:56 1
|
l12ab |
没找到编辑按钮在哪里,所以回复一贴。
上面这种做法似乎也没解决这个问题
回复
2017-04-06 20:07:42 2
|
yanghang |
你要只让a做https 就建a域名的站点,然后b和c单独建http的站点,如果想访问的是同一目录,那就修改server的root就行了
回复
2017-04-07 09:02:29 3
|
l12ab |
引用: 你没有看懂帖子,我给B和C只建立了http站点,但是可以访问https://b.com会有响应,响应的是A的证书,访问的也是A站点的内容。 ---- google了很多资料,这个问题似乎无解。 ssl握手在nginx获取host名称和server_name之前,也就是说nginx会响应所有的ssl请求,因为他不知道你要访问哪个站点,然后再得到server_name去匹配对应的站点,如果相应的server_name不存在,就匹配default的或者任意一个配置ssl的。 变通的方案是在server里判断得到的host是否与该server段配置的server_name一致,否则报错。
回复
2017-04-07 20:57:20 4
|
yanghang |
不会的,http站点和https站点是两个不同的站点 ,https的正常情况下应该是没响应的,除非你的https的那个a是默认站点,这样你可以另外建一个https的默认站点域名用ip地址就行了
回复
2017-04-07 21:25:41 5
|
l12ab |
引用: 你自己试试就知道我在说什么了
回复
2017-04-07 22:33:52 6
|
amysql |
像amssl那样单独分开是最好的。80与443分开,ssl需要什么参数不影响80端。
上面所说的问题web服务器nginx、apache都会这样的,没绑定的域都会访问到默认的主机的,80与443都会这样。 解决可以添加一个默认主机进行屏蔽,与80端口相似,同样在amssl。
回复
2017-04-10 11:46:08 7
AMH面板 - 好用高效低占用、安全可靠极稳定 |
894587758 |
像amssl那样单独分开是最好的。80与443分开,ssl需要什么参数不影响80端。
上面所说的问题web服务器nginx、apache都会这样的,没绑定的域都会访问到默认的主机的,80与443都会这样。 解决可以添加一个默认主机进行屏蔽,与80端口相似,同样在amssl。
回复
2017-06-07 14:10:20 8
|