最古老的也是最稳定的解决方法就是每个 HTTPS 主机使用不同的 IP 地址,但是要多买服务器。
另外是 TLS 协议的 SNI 扩展,但是有些浏览器不支持 Android 2.3.7 和 IE 6 / XP 和 IE 8 / XP
还有什么好办法吗?
http://www.cnblogs.com/davidwang456/p/3428261.html
http://www.ttlsa.com/web/multiple-https-host-nginx-with-a-ip-configuration/
1
3dwelcome 2016-09-23 19:34:54 +08:00 via Android
把 ssl 当成一个透明代理、连普通的 http 服务器、直接用最传统的 host http 头判断就行了。也不需要 sni
|
2
gamexg 2016-09-23 19:44:29 +08:00 via Android
多域名单证书
|
3
clino 2016-09-23 19:46:29 +08:00 via Android
用 nginx 什么的不是能轻松搞定吗
|
4
jasontse 2016-09-23 19:48:27 +08:00 via iPad
要么买野卡,要么买 IP ,自己选一个。
|
6
popu111 2016-09-23 20:15:25 +08:00 via Android
为何还要管 ie6 和安卓 2.3 ,早该去死了_(:з」∠)_
现在大多数网站用 IE6 都看不了,我不相信还有人会坚持,起码都用套壳了 |
7
3dwelcome 2016-09-23 21:18:54 +08:00 via Android
握手证书可以多域名签发的、这个不用担心。
|
8
alect 2016-09-23 22:15:32 +08:00
可以考虑用 startssl 或者 wosign 的免费证书签发多域名证书,目前 startssl 可以签发 10 个域名, wosign 可以签发 20 个域名,但是这两个证书的兼容性在这些系统下估计会有问题。如果有证书强迫症的话估计也可以跳过。
|
10
lslqtz 2016-09-23 22:35:21 +08:00
不建议使用 startssl 和 wosign ,建议用 le ,可以签发 100 个
|
11
niaoren OP 基于名字的 HTTPS 主机
如果在同一个 IP 上配置多个 HTTPS 主机,会出现一个很普遍的问题: server { listen 443; server_name www.example.com; ssl on; ssl_certificate www.example.com.crt; ... } server { listen 443; server_name www.example.org; ssl on; ssl_certificate www.example.org.crt; ... } 使用上面的配置,不论浏览器请求哪个主机,都只会收到默认主机 www.example.com 的证书。这是由 SSL 协议本身的行为引起的——先建立 SSL 连接,再发送 HTTP 请求,所以 nginx 建立 SSL 连接时不知道所请求主机的名字,因此,它只会返回默认主机的证书。 |
14
msg7086 2016-09-27 03:40:33 +08:00
这问题就是这样,没别的选择,要么买 IP 要么 SNI 要么 SAN 证书。
|
15
talas 2016-11-10 23:19:11 +08:00
gnutls 可以支持
|