V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
niaoren
V2EX  ›  SSL

如何在同一个 IP 上配置多个 HTTPS 主机?

  •  
  •   niaoren · 2016-09-23 18:48:20 +08:00 · 2622 次点击
    这是一个创建于 3012 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最古老的也是最稳定的解决方法就是每个 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/

    15 条回复    2016-11-10 23:19:11 +08:00
    3dwelcome
        1
    3dwelcome  
       2016-09-23 19:34:54 +08:00 via Android
    把 ssl 当成一个透明代理、连普通的 http 服务器、直接用最传统的 host http 头判断就行了。也不需要 sni
    gamexg
        2
    gamexg  
       2016-09-23 19:44:29 +08:00 via Android
    多域名单证书
    clino
        3
    clino  
       2016-09-23 19:46:29 +08:00 via Android
    用 nginx 什么的不是能轻松搞定吗
    jasontse
        4
    jasontse  
       2016-09-23 19:48:27 +08:00 via iPad
    要么买野卡,要么买 IP ,自己选一个。
    choury
        5
    choury  
       2016-09-23 20:11:40 +08:00
    @3dwelcome 握手阶段就需要发送证书,而握手的时候 http 头还没有发送,请问怎么判断?
    popu111
        6
    popu111  
       2016-09-23 20:15:25 +08:00 via Android
    为何还要管 ie6 和安卓 2.3 ,早该去死了_(:з」∠)_
    现在大多数网站用 IE6 都看不了,我不相信还有人会坚持,起码都用套壳了
    3dwelcome
        7
    3dwelcome  
       2016-09-23 21:18:54 +08:00 via Android
    握手证书可以多域名签发的、这个不用担心。
    alect
        8
    alect  
       2016-09-23 22:15:32 +08:00
    可以考虑用 startssl 或者 wosign 的免费证书签发多域名证书,目前 startssl 可以签发 10 个域名, wosign 可以签发 20 个域名,但是这两个证书的兼容性在这些系统下估计会有问题。如果有证书强迫症的话估计也可以跳过。
    lslqtz
        9
    lslqtz  
       2016-09-23 22:34:28 +08:00
    @3dwelcome 多域名签发后还判断个毛
    lslqtz
        10
    lslqtz  
       2016-09-23 22:35:21 +08:00
    不建议使用 startssl 和 wosign ,建议用 le ,可以签发 100 个
    niaoren
        11
    niaoren  
    OP
       2016-09-25 07:43:04 +08:00 via iPhone
    基于名字的 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 连接时不知道所请求主机的名字,因此,它只会返回默认主机的证书。
    niaoren
        12
    niaoren  
    OP
       2016-09-25 07:46:54 +08:00 via iPhone
    @popu111 还有一部分 Xp , IE8
    niaoren
        13
    niaoren  
    OP
       2016-09-25 07:50:22 +08:00 via iPhone
    @clino nginx 的 SNI 扩展 有些浏览器不支持
    msg7086
        14
    msg7086  
       2016-09-27 03:40:33 +08:00
    这问题就是这样,没别的选择,要么买 IP 要么 SNI 要么 SAN 证书。
    talas
        15
    talas  
       2016-11-10 23:19:11 +08:00
    gnutls 可以支持
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   850 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 215ms · UTC 20:35 · PVG 04:35 · LAX 12:35 · JFK 15:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.