关于 HTTPS 的部署问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
changnet
V2EX    问与答

关于 HTTPS 的部署问题

  •  
  •   changnet 2017-09-07 00:35:21 +08:00 3680 次点击
    这是一个创建于 3015 天前的主题,其中的信息可能已经有所发展或是发生改变。

    做了四年多的游戏服务端,对 web 的东西比较陌生。最近 H5 游戏兴起,公司内也有了不少 H5 项目组。H5 是 web 标准,就免不了被注入广告的问题。所以不少平台要求新上的游戏,采用 HTTPS。但采用 HTTPS 会有几个问题。

    1.H5 游戏主要分为资源加载和服务器通信两部分。资源加载是普通的 web,只需要按 HTTPS 部署,不会有太大的问题。与服务器通信则较为麻烦,是采用 websocket 或者 socket.io 这种原生的 socket 与服务器进行二进制数据交互。由于 ARPG 类游戏通信量巨大,在完成验证后并没有加密的需求,所以这块并不想改动。现在想知道,在浏览器中,主站是 HTTPS 的,然后用 js 发起了一个非 HTTPS 的 socket 连接(这个 socket 并不是以 http 报文通信),浏览器是否会把这个网站标记为"不安全"或者“并非完全安全”。

    2.证书问题。国内很多都是小服运营,随便打开一个游戏,都开了几千个服务器。这意味着,高峰时将会有几百台物理服务器(或云服务器),对应几百个 IP。而证书是对应域名的,普通证书一个证书对应一个域名显然不能用。通配证书似乎可能一个证书对应多个二级域名,比如对应 srv1.example.comsrv2.example.com...。但即使这样,貌似申请域名的时候二级域名的数量是有限的,即使供应商那边不限制,每增加一个域名,就需要运维去绑定一下 IP,不仅麻烦还有个时效的问题。而且公司购买的服务器是根据业务来增减的,这非常不灵活。

    PS:我所在的项目组并不是 H5,具体需求我并不清楚。只是这几天隔壁项目组和运维撕逼了很久,自己旁边听到了也想了下这个问题,也没有好的解决方案。运维因为技术这边出的方案太复杂,部署容易出错,拒绝执行中...

    第 1 条附言    2017-09-07 11:47:30 +08:00

    谢谢大家回复

    其实使用HTTPS,技术上不没问题的。只是部署的问题。

    因为现在服务器太多,而证书只能绑定域名,服务器又是不固定的,域名绑定IP将会是个体力活,这一块控制权还不在自己手里。

    另外我记得域名申请的时候,子域名数量有是有限的吧

    13 条回复    2017-09-07 18:05:27 +08:00
    0ZXYDDu796nVCFxq
        1
    0ZXYDDu796nVCFxq  
       2017-09-07 00:45:58 +08:00 via iPhone
    1. 标记为混合内容,不安全。最近两三年的浏览器应该会拒绝加载图片之外的资源,就是说无法正常访问。
    2. 其实和 HTTP 部署差别不大。
    changnet
        2
    changnet  
    OP
       2017-09-07 00:49:28 +08:00
    @gstqc https 服务端这边还是可以实现的,毕竟现成的库太多,顶多承载量少些。但是证书那个问题头疼,服务器太多,普通 web 部署应该不会有这么多服务器的。
    ShareDuck
        3
    ShareDuck  
       2017-09-07 00:54:48 +08:00 via Android
    第 2 个问题,用自己的 DNS 服务器即可,无限二级域名,可以动态调整。如果都能够做到自适应部署服务器了,那这个应该毫无难度才对。
    fcka
        4
    fcka  
       2017-09-07 01:16:11 +08:00 via Android
    浏览器中发出的 socket 指的是 websocket ?
    changnet
        5
    changnet  
    OP
       2017-09-07 01:47:45 +08:00 via iPad
    @fcka 是的。通过 websocket 创建一个长连接到服务器
    ss098
        6
    ss098  
       2017-09-07 01:50:24 +08:00 via Android
    通配符证书可以满足你的证书需求,而你说的叫多域名证书。
    ihacku
        7
    ihacku  
       2017-09-07 02:39:04 +08:00 via iPhone
    一般泛域名证书是不限制二级域名数量嗯吧
    asdf123101
        8
    asdf123101  
       2017-09-07 05:52:27 +08:00 via Android
    1. 暂时可以可以设置 opaque response 从 HTTPS 往 http 通信,但这个方式不被鼓励,再往后应该会被干掉。现在最鼓励的就是 https everything,具体在游戏这方面怎么应用实施难度不清楚。
    2. 有 wild card certificate,会贵一点,但是可以直接解决问题。
    plantain
        9
    plantain  
       2017-09-07 07:06:14 +08:00   1
    我刚才测试了一下,https 的页面是可以正常连 ws://开头的 websocket 的服务的(可以通过这个地址测试: https://plantain-00.github.io/ws-tool/)

    不过常规的实践是,websocket 连接时发出的请求是 http 协议(可以是 http 或 https,分别对应 ws:// 和 wss://,后者会对通信加密,连接的请求可以携带 cookie、token 等用于身份验证,身份验证失败可以直接断开连接,保证之后的数据帧的安全),之后的双工通信消息则是通过 tcp 来发送的(不涉及 http,也就没有 https 的概念)。

    所以没必要那么做,websocket 服务直接使用 wss:// 就好,只会加密 websocket 的连接部分,后面的数据帧是不会加密的。
    bear2017
        10
    bear2017  
       2017-09-07 07:49:04 +08:00 via Android
    https 的话 websocket 用 wss://,证书的话可以用通配符。
    最近发现 https 加载要比加载 http 快多了,用 https 协议的时候浏览器会采用 http/2 传输(多路复用),速度的确快了很多,特别是图片加载这一块。关键是证书安装吧。。。
    ivyliner
        11
    ivyliner  
       2017-09-07 10:53:01 +08:00
    1. 不可以. 浏览器要求只能调用 >= 当前页面安全级别的地址. 所以 https 页面是不能调用 http 的
    2. 购买一个通配符证书就可以了, 然后你爱用多少个子域名都可以, 前提是父域名不需要一致.
    这些运维应个很了解了的.
    choury
        12
    choury  
       2017-09-07 12:23:37 +08:00 via Android
    都说了通配符,谁管你用多少域名,你自己搞个 dns,想要多少子域名有多少,不想自己搞就买别家的专业版,这个数量限制就是看你给多少钱了
        13
    cokll  
       2017-09-07 18:05:27 +08:00
    阿里云 ecs 镜像复制,没毛病,简单易用
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1028 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 23:08 PVG 07:08 LAX 15:08 JFK 18:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86