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

申请 Letsencrypt 的证书真简单,互联网距离全面 HTTPS 还有多远呢?

  •  1
     
  •   revir · 2016-10-31 23:33:34 +08:00 · 5359 次点击
    这是一个创建于 2975 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今晚给我的 V2MM-自由职业者社区 申请了 Let's encrypt 的 SSL 证书,原以为会很复杂的,审核不知道要多久。没想到全程特别简单,全软件操作,无需审核。他们的服务器可能频繁更新中,或者压力巨大,出错的概率很大,但是到底还是成功了。我写了一篇博文记录了一下这个过程。

    Let's Encrypt 是由互联网安全研究小组( ISRG ,一个公益组织)提供的服务。主要赞助商包括电子前哨基金会, Mozilla 基金会, Akamai 以及思科。 2015 年 4 月 9 日, ISRG 与 Linux 基金会宣布合作。[3] 用以实现这一新的数字证书认证机构的协议被称为自动证书管理环境( ACME )。[4] GitHub 上有这一规范的草案,[4][5]且提案的一个版本已作为一个 Internet 草案发布。[6] Let's Encrypt 宣称这一过程将十分简单、自动化并且免费。[7] 2015 年 8 月 7 日,该服务更新其推出计划,预计将在 2015 年 9 月 7 日当周某时发布首个证书,随后向列入白名单的域名发行少量证书并逐渐扩大发行。[8] 2015 年 12 月 3 日,该服务进入公测阶段,正式面向公众。[9] 2016 年 3 月 8 日, ISRG 宣布,他们已经签发了第一百万张证书。[10] 2016 年 4 月 12 日,该项目正式离开 Beta 阶段。[11]
    —— 维基百科

    现在据说 Let's Encrypt 的证书已经支持所有的浏览器,连 xp 都支持,不知是否如此,能否请大家帮忙看看能否访问 v2mm 网站?这是否说明以后互联网都应该全面使用 HTTPS 了呢? 而国内这方面貌似还有点落后, 查看了一下,淘宝貌似全站支持,但京东却只有登录页面使用 HTTPS 。这样缺点是中间人还是可以劫持 session 盗取用户信息。那么是什么导致京东不全面使用 https 呢?前端库不支持??

    34 条回复    2016-11-12 17:04:22 +08:00
    neilp
        1
    neilp  
       2016-10-31 23:54:43 +08:00 via iPhone   ❤️ 1
    不是我说,你的方法真的算不上简单,试试 acme.sh
    wy315700
        2
    wy315700  
       2016-10-31 23:55:46 +08:00
    然而证书时间才 3 个月,如果遇到用户手机或者电脑时间不在有效期内就玩完了
    justyy
        3
    justyy  
       2016-10-31 23:58:20 +08:00
    我用的是 CloudFlare 免费的 Flexible SSL, 好处是: 一键开关,不需要配置,自动续
    xfspace
        4
    xfspace  
       2016-11-01 00:04:24 +08:00 via Android   ❤️ 1
    一直都不远。远的是某些 CA 的职业道德和颁发证书的透明度。
    matsuz
        5
    matsuz  
       2016-11-01 00:24:08 +08:00 via Android
    申请腾讯云的 TrustAsia 和阿里云的 Symentec 证书更简单
    特别是 TrustAsia ,鼠标点一点就好了
    而且这俩还是一年有效期
    joniking
        6
    joniking  
       2016-11-01 00:25:51 +08:00 via iPhone
    @matsuz 马克
    yylzcom
        7
    yylzcom  
       2016-11-01 01:29:13 +08:00
    acme.sh 确实简单,值得推荐
    msg7086
        8
    msg7086  
       2016-11-01 01:32:24 +08:00
    1 楼菊苣写的 acme.sh 好顶赞
    a86913179
        9
    a86913179  
       2016-11-01 02:45:09 +08:00
    @wy315700 crontab -e --> certbot renew
    a86913179
        10
    a86913179  
       2016-11-01 02:48:48 +08:00
    很复杂?官网都有教程,直接运行 certbot 然后就有图形界面,输入域名和网站目录就可以了,然后添加一条 certbot renew 到 crontab
    WildCat
        11
    WildCat  
       2016-11-01 03:10:51 +08:00
    @justyy +1
    还有 cdn ,隐藏原站 IP 。
    lightening
        12
    lightening  
       2016-11-01 03:28:26 +08:00
    自动 renew 的 cronjob 做了吗?不然是大坑。
    justyy
        13
    justyy  
       2016-11-01 03:49:37 +08:00
    @WildCat 是的, 我一直用的是 CLOUDFLARE , 而且有四个 PRO 付费帐号, 特别好用。
    azh7138m
        14
    azh7138m  
       2016-11-01 07:32:18 +08:00 via Android
    装个 HTTPS everywhere , jd 大部分页面都可以用 HTTPS 的
    lzhd24
        15
    lzhd24  
       2016-11-01 07:40:09 +08:00 via Android
    你可能需要这个网站:
    https://certbot.eff.org/
    BFDZ
        16
    BFDZ  
       2016-11-01 08:02:01 +08:00 via Android
    princeofwales
        17
    princeofwales  
       2016-11-01 08:59:10 +08:00
    还有一大堆放在虚拟主机上的网站不支持 SSL
    arens
        18
    arens  
       2016-11-01 09:10:36 +08:00
    用的 V2 上别人安利的 Saki SSL ,不过是收费的
    walkingway
        19
    walkingway  
       2016-11-01 09:10:59 +08:00
    @WildCat CloudFlare 的 CDN 上过,可惜就是国内太慢了
    revir
        20
    revir  
    OP
       2016-11-01 09:25:34 +08:00
    然而,一楼的 acme.sh 太复杂了, acme-tiny.py 才 200 行代码,功能足够。现阶段 letsencrypt 的服务器不稳定,看懂客户端在干什么事,有助于我排错。
    revir
        21
    revir  
    OP
       2016-11-01 09:29:38 +08:00
    官网的 certbot 在 aws 上运行不了 :(
    wayslog
        22
    wayslog  
       2016-11-01 09:33:35 +08:00 via Android
    Let's encrypt:互联网界的 GC
    chenset
        23
    chenset  
       2016-11-01 09:46:35 +08:00
    请问如果 3 个月到期后续期成功了,续期成功后 ssl 的内容不是改变了吗? nginx 服务器需要重启吗?
    neilp
        24
    neilp  
       2016-11-01 09:50:00 +08:00
    @revir 代码多不意味着复杂.

    有可能是有了更丰富的功能, 更完备的错误处理, 更多的调试信息, 更强更兼容的跨平台代码, 更健壮的代码.

    如果仅仅一个 issue 功能, 一种认证方式, 不带任何错误处理,不带调试, 不顾健壮性的裸奔. 我也可以 200 行. 甚至更短.
    但这样的 code 只能是 sample, 示例. 没有任何的实用价值, 更不能大规模应用.

    Anyway, It'up to you.
    revir
        25
    revir  
    OP
       2016-11-01 10:01:02 +08:00
    @neilp
    那是, acme.sh 的代码复杂在可能使用的 shell, 代码更难懂,关于 http 和 debug 模块实现太太复杂了, python 上都是现成的库,清晰多了。而我用 acme-tiny.py 最主要的原因它兼容 AMI 这个小众的系统,这不说明它的跨平台更强吗?它还有自动化测试,官网还特地说明为了 ssl 证书的安全性,不要 root 运行,特别是还有 cron , root 更不安全了。
    revir
        26
    revir  
    OP
       2016-11-01 10:05:11 +08:00
    @chenset
    这我就不知道了 :(
    oott123
        27
    oott123  
       2016-11-01 11:10:37 +08:00
    不全面支持 https 的原因很多,比如国内某些运营商会把你的 DNS 劫持到自己的、只支持 http 的缓存服务器, https 根本连不上(
    matsuz
        28
    matsuz  
       2016-11-01 11:29:52 +08:00 via Android
    @chenset 重新加载证书就行了,不需要重启
    neilp
        29
    neilp  
       2016-11-01 11:34:32 +08:00
    @revir 这有一个简短的中文说明, 可能需要 3 分钟. 请参考一下.

    https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E


    看看我们的完整跨平台自动测试列表:
    https://github.com/Neilpang/acme.sh#tested-os


    >> 官网还特地说明为了 ssl 证书的安全性,不要 root 运行,特别是还有 cron , root 更不安全了。

    这完全就是聋子的耳朵. acme.sh 也不需要 root. 有些功能必须要 root 权限, 比如 80 , 443 端口等等。 其他功能均无需 root 。
    revir
        30
    revir  
    OP
       2016-11-01 12:08:30 +08:00
    @neilp Nice job!
    我知道, acme.sh 的功能更强大,支持 http/dns 等多种方法验证,甚至还有 standalone , 还省略了前期自己生成 key, csr 等准备过程,很用心!

    相比之下, acme_tiny 就做了最后一步 http 验证,但是当时于我是最需要的一步,它的教程刚好写了一个新手每一步需要怎样操作的完整教程,简单而又看得懂,说实话刚开始我看 certbot 和 certbot auto 那一堆教程真的是头大,还以为多复杂呢!

    acme_tiny 感觉更原始但更简洁,而 acme.sh 更强大一些,覆盖的目标用户群肯定更广泛一些! anyway, 各取所需吧!
    neilp
        31
    neilp  
       2016-11-01 12:43:32 +08:00 via iPhone
    @revir 是啊 我看 certbot 也头大。 acme_tiny 的确是很好的参考实现。 但是太单薄。
    revir
        32
    revir  
    OP
       2016-11-02 10:32:04 +08:00
    @lightening
    你的博客很 Cool , 欢迎来 v2mm 交个朋友,有兴趣交换链接?
    Havee
        33
    Havee  
       2016-11-02 16:20:40 +08:00
    刚尝试 acme.sh ,太折腾了,用普通用户去跑,过程需要 root ,各种莫名其妙的错误。
    用 root 去跑,-su: acme.sh: command not found...

    各位写脚本的时候,能提示下究竟是哪个权限用户去跑么

    最后,还是用 certbot ,按照 https://certbot.eff.org/#gentoo-nginx 一步到位...
    Davidcn
        34
    Davidcn  
       2016-11-12 17:04:22 +08:00
    然而 Alpha 默默的不说话。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1485 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 17:09 · PVG 01:09 · LAX 09:09 · JFK 12:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.