revir
V2EX  ›  SSL

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

  •  1
     
  •   revir · Oct 31, 2016 · 6767 views
    This topic created in 3654 days ago, the information mentioned may be changed or developed.

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

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

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

    Anyway, It'up to you.
    revir
    revir
    OP
    Nov 1, 2016
    25
    @neilp
    那是, acme.sh 的代码复杂在可能使用的 shell, 代码更难懂,关于 http 和 debug 模块实现太太复杂了, python 上都是现成的库,清晰多了。而我用 acme-tiny.py 最主要的原因它兼容 AMI 这个小众的系统,这不说明它的跨平台更强吗?它还有自动化测试,官网还特地说明为了 ssl 证书的安全性,不要 root 运行,特别是还有 cron , root 更不安全了。
    revir
    revir
    OP
    Nov 1, 2016
    26
    @chenset
    这我就不知道了 :(
    oott123
    oott123
    Nov 1, 2016
    27
    不全面支持 https 的原因很多,比如国内某些运营商会把你的 DNS 劫持到自己的、只支持 http 的缓存服务器, https 根本连不上(
    matsuz
    matsuz
    Nov 1, 2016 via Android
    28
    @chenset 重新加载证书就行了,不需要重启
    neilp
    neilp
    Nov 1, 2016
    29
    @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
    revir
    OP
    Nov 1, 2016
    30
    @neilp Nice job!
    我知道, acme.sh 的功能更强大,支持 http/dns 等多种方法验证,甚至还有 standalone , 还省略了前期自己生成 key, csr 等准备过程,很用心!

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

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

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

    最后,还是用 certbot ,按照 https://certbot.eff.org/#gentoo-nginx 一步到位...
    Davidcn
    Davidcn
    Nov 12, 2016
    34
    然而 Alpha 默默的不说话。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5221 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 07:03 · PVG 15:03 · LAX 23:03 · JFK 02:03
    ♥ Do have faith in what you're doing.