使用了 AWS 的 ELB 双机热备架构,同时鉴于赛门铁克不久就要被干掉的情况,决定使用 letsencrypt 证书,设置定时任务,每两个月更新一次,兴冲冲的下载 certbot,并且设置了定时任务,才发现:
1:设置的方式 webroot 方法,也就是说在网站根目录下写一个.xxx 文件,每次访问时查看这个文件是否正确。但是问题来了,另一台服务器上的项目根目录下并没有这个文件啊,怎么办?
2:或者说 letsencrypt 还有其他的认证方式吗?
3:各位给支支招。。。
1
15015613 2017-08-02 22:16:13 +08:00 via Android
1 的问题,定时用 rsync 同步应该可以解决。
|
2
7654 2017-08-02 22:18:30 +08:00
域名认证
|
3
coderfox 2017-08-02 22:19:13 +08:00 via Android
有 DNS 认证,你可以查查。
不过双机的话,还是用同步工具(如上面提到的 rsync )比较好。 |
4
ericFork 2017-08-02 23:08:05 +08:00
https://github.com/GUI/lua-resty-auto-ssl
这个项目可以把证书放到 redis 里 |
5
l0wkey 2017-08-02 23:10:27 +08:00 via iPhone
证书不应该是在 elb 上的么
|
6
neilp 2017-08-02 23:18:01 +08:00 via iPhone
既然是双机热备,多同步一个证书文件也不是什么难事。 首选推荐自己同步证书。
由于是双机热备, 所以其实存在一种情况就是主机宕掉,切到备机,此时证书过期了,那么将无法更新。 推荐使用 acme.sh 进行 dns 验证。 |
7
Fishdrowned 2017-08-02 23:34:36 +08:00 via Android 1
不用 DNS 验证也没问题,在入口用 nginx 把.well-known 的请求反代就可以了。我都是写一个公用配置,然后各入口 include 进去。
|
8
s609926202 OP @neilp OK,O(∩_∩)O 谢谢你的建议
|
9
s609926202 OP @Fishdrowned 牛逼、、我喜欢这个方法
|
10
whileFalse 2017-08-03 00:02:15 +08:00
建议使用 ELB 进行 https 卸载。
用 DNS 验证;然后把证书加载到 ELB 上;业务服务器本身不处理 https。我就是这么干的。 获取证书可以参考 https://github.com/xdtianyu/scripts/tree/master/le-dns |
11
ysc3839 2017-08-03 00:05:25 +08:00 via Android
我个人是建议 DNS 认证。
|
12
s609926202 OP @Fishdrowned 哥们你这个方法貌似对双机热备不可行把?反代这个我可以理解,但是你反代的 elb 不是就给了一个 CNAME 吗?然后通过 CNAME 到达任意一台机器,并不是固定的,,,所以你反代肯定是不行的啊,除非专门有一台机器拿来存存储证书文件,然后反代到可以确定的目的地。。。
|
13
s609926202 OP |
14
s609926202 OP @whileFalse ELB 进行 https 卸载这个是什么意思,没懂,,然后证书加载到 ELB,是需要上传生成好的证书到 elb 吗?
|
15
msg7086 2017-08-03 01:36:22 +08:00
@s609926202 反代到某台实体机不行吗? AWS 我不熟……
|
16
s609926202 OP @msg7086 呃,我们总共两台机器,没有多余的了,,而且为了这个貌似再购买一台不怎么划算,毕竟一台一个月的成本就得 200 多~~
|
17
cxbig 2017-08-03 05:45:32 +08:00
通常的做法都是把证书方 ELB,EC2 只管内容分发。
配置好 IAM,有很多脚本可以实现 Let ‘ s Encrypt 证书的替换 其次可以使用 AutoScaling Group 或 CodeDeploy,脚本定期更新证书放 S3,挂上的时候自动抓下来放到指定位置。 |
18
cxbig 2017-08-03 05:49:22 +08:00
2. 你可以用 AWS 自己的证书系统 ACM,非常方便。只要域名管理权在你手里,认证流程非常简单。
我们公司测试环境的证书都是 ACM 生成的。 |
19
whileFalse 2017-08-03 06:36:53 +08:00 via iPhone
@s609926202 就是说业务服务器和 elb 之间使用 http 通讯,elb 对外提供 https 服务,这就叫 https 卸载。
就是申请好证书上传到 IAM,然后和 elb 绑定。 楼上说的 acm 证书管理在中国区没有开放,我没用过。 |
20
a2213108 2017-08-03 08:08:40 +08:00 via Android
跑个题,Symantec 的证书可以在 namecheap 免费替换成同级的 comodo 证书。
https://www.namecheap.com/symantec-replace/ |
21
Tink 2017-08-03 09:14:29 +08:00
为啥不在一台机器上自动更新完之后同步到另一台?
|
22
ysc3839 2017-08-03 15:16:21 +08:00 via Android
@s609926202 是要同步,不确定生成两个是否会吊销旧的那个。
|
23
msg7086 2017-08-03 15:56:52 +08:00
@s609926202 没看懂你在说什么。你现在有两台实体机和一台 ELB,其中一台实体机做脚本,另一台实体机反代到这一台,为什么还要再买一台?我看得好懵啊。
@ysc3839 当然不会。你想想嘛,第一,重复申请证书是很普通的事情,一个网站很多前端的情况很普遍,而私钥原则上是不应该离开服务器本机的,也就是说不支持重复申请证书的话客户就必须承担私钥过网络的风险。第二,吊销证书成本非常高,签署成本只要签署就行了,而吊销必须要维护吊销列表,而且所有的客户端都会去检查吊销列表,你想想这个列表得多大,客户每次更新吊销列表得下载多少数据。 哦对了再说一次,一个账号对一个域名的认证,在一段时间内只需要一次。比如 a 域名你今天验证过了,那下个月你用同一个账号签 a 域名的证书是不需要再验证的。签 5 次 10 次不同的证书,只要域名相同就不需要再验证。 |