多服务器部署 let's encrypt 的几个问题 - V2EX
cnnblike
V2EX    SSL

多服务器部署 let's encrypt 的几个问题

  •  
  •   cnnblike 2016-08-29 13:11:56 +08:00 4395 次点击
    这是一个创建于 3330 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是这样子的,人在国外,所以访问国内不是很快,打算在 hyper.sh 上和网易蜂窝上各自部署一个 docker 镜像,用来放自己的静态博客,用 route53 之类的服务弄个分区解析。这其实难度并不是很高,我个人估计只要把镜像 push 到两个网站,然后 hexo deploy 的设置项弄成两个 git 同步就行了。

    但是麻烦往往是因为想折腾才出来的。想给博客加上 ssl ,这个时候麻烦就来了, let's encrypt 的原理决定了只能对其中一个的请求生效吧?

    我只能想到一个主-从同步证书的方案,通过 git 的 post-receive hook 做同步,但是问题还是大,以哪个 docker 为主应该是根据 let's encrypt 的服务器解析到哪个 docker 的 IP 来决定的,谁主谁从?更有普遍性的,如果我以后打算更多的 docker 提供服务的话,我该怎么把他修改成 1 主-多从的方案呢?

    我怎么弄可以让整个实现方案优雅一点?暂时不考虑 dns 记录验证 Domain Validation 的方式,那个对 DNS 服务商的 API 依赖较高,指不定我哪天就换 DNS 服务商了呢。。

    顺便求问,因为现在已经有国外的地址和信用卡了,所以打算把在万网买的域名都放到国外的域名商那边,求问哪个域名商靠谱一点价格稳健一点?

    10 条回复    2016-08-31 20:54:51 +08:00
    UnisandK
        1
    UnisandK  
       2016-08-29 13:24:52 +08:00   1
    ACME 验证就无所谓解析到哪个 CDN 了吧
    cnnblike
        2
    cnnblike  
    OP
       2016-08-29 13:31:24 +08:00
    @UnisandK 不是 CDN ,是直接在源站做验证吧,比方说 A 服务器和 B 服务器发现证书还有 30 天过期,那怎么办比较好?
    是 A 服务器申请做验证,然后对 le 的服务器发出请求,接着 le 因为 le 自己的 dns 问题去请求 B 的证书了,这怎么办呢?

    到底 A 服务器当源还是 B 服务器当源呢?
    UnisandK
        3
    UnisandK  
       2016-08-29 13:40:14 +08:00   1
    @cnnblike 我没表述清楚,我的意思是 let's 是可以验证页面内容的,只要从机( CDN )连主机的验证文件都一起同步过去了的话那边无论解析到哪个 IP 上都能通过验证吧
    cnnblike
        4
    cnnblike  
    OP
       2016-08-29 13:44:34 +08:00
    @UnisandK 哦……你的意思是,主在接到 let's encrypt 发出的请求后把 challenge 文件同步到从上面是不是?感觉有点怪怪的……因为我的打算是主从的网站文件也不一样,一个放中文版本,一个放英文版本这种,我再想想,应该确实可以
    wevsty
        5
    wevsty  
       2016-08-29 13:49:57 +08:00   1
    是哪个机器申请证书和你最终由多少 docker 使用这个证书关系并不大,反正你最后始终得同步证书。而且既然是同步证书,哪个证书最新的就自动同步到其他全部机器也就完事了,或者直接分发证书。
    比如,找个域名指向所谓的中心机也就是申请证书的机器,定期自动更新证书,然后其他机器上定期自动通过脚本使用 stfp 下载覆盖本机的证书也就行了。如果后期要变更申请证书的机器,把域名指向新机器就行了。

    另外域名的话可以选择 namesilo 家,价格实惠,口碑不错, com 域名 8.99USD 一年(注册续费同价)提供免费的隐私保护。
    https://www.namesilo.com
    优惠码: ONEAFF
    首次注册或者转移域名可以优惠 1USD
    cnnblike
        6
    cnnblike  
    OP
       2016-08-29 14:14:27 +08:00 via iPhone
    @wevsty 中心机分发证书我考虑过,但是我记得证书的签发是分成三部分吧。
    1.向服务器提出申请。
    2.获得服务器给的 challenge ,把某个文件放在某个目录下。
    3.从服务器获得证书。
    问题在于第二步怎么把这个要放的文件放在这个目录下呢?这可不只是要放在中心机的目录下,还是要放在所有从机的目录下的啊!莫不是要预先通过 git 部署一遍文件?
    dzxx36gyy
        7
    dzxx36gyy  
       2016-08-29 14:32:01 +08:00 via Android
    @cnnblike 你到底在想啥……请使用 acme 脚本通过 dns 解析方式验证签发证书规避分区解析导致的常规方式签发出现问题,然后你所需要考虑的只是分发证书了。
    wevsty
        8
    wevsty  
       2016-08-29 14:45:53 +08:00
    @cnnblike 不需要所有机器都有,第二步的认证文件只要确保认证的时候能访问到就行了,不需要所有机器都有一份。
    比如有支持 FTP 验证或者 SMTP ,那么你只需要把 FTP 认证端口全部转发到中心机就行了。
    参考项目: https://github.com/srvrco/getssl
    在比如 DNS 验证也可以的。我的理解是 DNS 验证应该是只要第一次添加记录就行了,后续续期不需要更改 DNS ,所以也不需要用到 DNSAPI 之类的。就算需要的话也有一堆项目提供常见的 DNSAPI 支持
    参考项目: https://github.com/Neilpang/acme.sh
    以上项目都是
    https://letsencrypt.org/docs/client-options/
    很多选择可以参考。
    JJaicmkmy
        9
    JJaicmkmy  
       2016-08-29 14:53:45 +08:00
    在一台机器上生成证书,然后用 rsync 把证书同步到其他机器。这样就可以了吧?
    ershiwo
        10
    ershiwo  
       2016-08-31 20:54:51 +08:00   1
    我自己的部署方案: https://www.ershiwo.com/2016/03/use-lets-encrypt-on-multi-servers.html
    核心思想是用 DNS 验证,然后同步证书自动重载 apache2 。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5524 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 09:03 PVG 17:03 LAX 02:03 JFK 05:03
    Do have faith in what you're doing.
    ubao 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