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

关于 https 证书的浏览器向下兼容性问题

  •  
  •   pc10201 · 2016-09-28 17:04:36 +08:00 · 6648 次点击
    这是一个创建于 2977 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用 github 上的 acme.sh 脚本申请了一个 Let's Encrypt ,用
    acme.sh --issue --dns dns_cx -d xxx.com--keylength ec-256
    申请一个 ECC 证书,用网站
    https://www.ssllabs.com/ssltest/index.html
    进行检测,得了 A+,但是很多浏览器 Server closed connection

    怎么做到像这个网站一样
    https://www.ssllabs.com/ssltest/analyze.html?viaform=on&d=imququ.com

    评分和浏览器兼容性都能保证?
    21 条回复    2016-10-18 15:20:00 +08:00
    letitbesqzr
        2
    letitbesqzr  
       2016-09-28 17:13:03 +08:00
    ecc 证书的话无论怎么配置都有些不能兼容的
    "并不是所有浏览器都支持 ECDHE 密钥交换,也就是说 ECC 证书的兼容性要差一些。例如在 Windows XP 中,使用 ECC 证书的网站只有 Firefox 能访问( Firefox 的 TLS 自己实现,不依赖操作系统); Android 平台中,也需要 Android 4+ 才支持 ECC 证书。"

    但是 nginx 目前已经支持配置多个证书了
    Showfom
        3
    Showfom  
       2016-09-28 17:22:49 +08:00 via iPhone
    不支持的浏览器的访客基本也可以忽略了
    bigtan
        4
    bigtan  
       2016-09-28 17:29:44 +08:00
    debian 的 wget 无法正确的解析 ecc 证书
    VmuTargh
        5
    VmuTargh  
       2016-09-28 17:33:30 +08:00 via Android
    这个站点配置了 ECC+RSA 两种证书,也就是说自动检测 UA 然后发送对应的可兼容的且强度最大证书给客户端。
    另外这个兼容性不仅仅和 ECC/RSA 有关系,还有和 cipher 有关系。
    举个例子,比如我这个爆破掉的 https://etula.me ,曾经有段时间仅仅支持 AES-GCM ,使得一大堆老系统全数爆炸(当然现在配置了 AES-CBC 所以兼容性好了一些)
    至于 x25519 这个 cipher ,现在更是少。目前我所知道的只有 boringssl 、 chromium/chrome 还有 openssl1.1.0 支持………
    VmuTargh
        6
    VmuTargh  
       2016-09-28 17:36:42 +08:00 via Android
    @VmuTargh 纠正一下 我那个站点的 cipher 不知道什么时候被我改回 aes-gcm only 了……😂😂😂😂
    VmuTargh
        7
    VmuTargh  
       2016-09-28 17:37:35 +08:00 via Android
    @VmuTargh 哦 请无视上面回复 是我脑子秀逗了😓😓😓
    isCyan
        8
    isCyan  
       2016-09-28 17:38:46 +08:00
    @VmuTargh 检测 UA ??????
    VmuTargh
        9
    VmuTargh  
       2016-09-28 17:42:23 +08:00 via Android
    @isCyan 这个确实是如此,因为 baidu 也是类似的机制。试试看用 opera12.18 不改 UA 去访问百度,再 cp 一个 ff40 的 UA 过去。你会发现前者没有,但是后者有( opera12.18 支持新的 key exchange 还有 cipher
    ghost444
        10
    ghost444  
       2016-09-28 17:43:14 +08:00
    刚刚搜了一下,可以用 Nginx 做双证书

    https://imququ.com/post/ecc-certificate.html#toc-2
    isCyan
        12
    isCyan  
       2016-09-28 17:47:37 +08:00
    @VmuTargh Waht! SSL 握手都没完,连接都没建立,你怎么发送 Header , UA 是在 Header 里的。不是 UA , 是直接和浏览器交换加密方式,看看浏览器支不支持。 @qgy18
    pc10201
        13
    pc10201  
    OP
       2016-09-28 17:52:58 +08:00
    @letitbesqzr 我配置了 rsa 和 ecc 证书,但还是有一些浏览器不兼容,报告如下 https://www.ssllabs.com/ssltest/analyze.html?d=download.examvces.com&hideResults=on
    dynos01
        14
    dynos01  
       2016-09-28 17:58:50 +08:00 via iPhone
    你的安全设置太严格了 允许一些老加密方法 再安装双证书就行了
    alect
        15
    alect  
       2016-09-28 19:00:20 +08:00
    不需要那么高…… A 就行了
    qgy18
        16
    qgy18  
       2016-09-28 22:34:23 +08:00 via iPhone
    @isCyan 你说得对。
    楼主你搞成双证书兼容性就差不多可以了。
    剩下一些不支持 SHA-2 证书,不支持 tls1.0+ 协议的终端无视好了。
    ghost444
        17
    ghost444  
       2016-09-29 13:41:47 +08:00
    @qgy18 话说用 fiddle 抓包的时候可以看到 UA 是什么黑科技……并没有信任那个根证书
    lslqtz
        18
    lslqtz  
       2016-09-29 21:07:56 +08:00
    如果现在还有 SHA-1 证书,那么双证书真心完美了
    Williamp
        19
    Williamp  
       2016-10-04 20:13:56 +08:00
    @lslqtz Google chrome browser giving error and blocking SHA-1 certificate as per https://security.googleblog.com/2015/12/an-update-on-sha-1-certificates-in.html
    lslqtz
        20
    lslqtz  
       2016-10-04 21:20:05 +08:00 via iPhone
    @Williamp 如果........
    Williamp
        21
    Williamp  
       2016-10-18 15:20:00 +08:00
    If any website is using SHA-1 certificate
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2826 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 14:07 · PVG 22:07 · LAX 06:07 · JFK 09:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.