一个快速获取/更新 Let's encrypt 证书的 shell script

2015-12-07 20:10:44 +08:00
 clanned
https://github.com/xdtianyu/scripts/tree/master/lets-encrypt

调用 acme_tiny.py 认证、获取、更新证书,不需要额外的依赖。

**下载到本地**

```
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.conf
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh
chmod +x letsencrypt.sh
```

**配置文件**
只需要修改 `DOMAIN_KEY` `DOMAIN_DIR` `DOMAINS` 为你自己的信息

```
ACCOUNT_KEY="letsencrypt-account.key"
DOMAIN_KEY="example.com.key"
DOMAIN_DIR="/var/www/example.com"
DOMAINS="DNS:example.com,DNS:whatever.example.com"
```
执行过程中会自动生成需要的 key 文件。

**运行**

```
./letsencrypt.sh letsencrypt.conf
```

**注意**
需要已经绑定域名到 `/var/www/example.com` 目录,即通过 `http://example.com` `http://whatever.example.com` 可以访问到 `/var/www/example.com`目录,用于域名的验证

**cron 定时任务**

每个月自动更新一次证书,可以在脚本最后加入 `service nginx reload`等重新加载服务。

```
0 0 1 * * /etc/nginx/certs/letsencrypt.sh /etc/nginx/certs/letsencrypt.conf >> /var/log/lets-encrypt.log 2>&1
```
23260 次点击
所在节点    分享创造
63 条回复
johnjiang85
2015-12-17 17:36:15 +08:00
@quericy
目前 DNSPod 免费套餐灰度更新了部分服务器,已经可以验证通过 letsencrypt 的证书了。
之前一些其他国内 NS 可以验证通过,但是现在无法验证通过了,主要是 letsencrypt 修改了规则,重新兼容新规则,并申请开通安全防护策略耽误了一些时间。
fishlee
2015-12-17 22:44:44 +08:00
谢谢分享了。
quericy
2015-12-18 11:45:12 +08:00
@johnjiang85 感谢,这次 2 分钟就搞定了
rio
2015-12-24 10:33:18 +08:00
@johnjiang85 又开始超时了
CloudXNS
2015-12-25 17:30:33 +08:00
CloudXNS 本版更新已兹磁,欢迎测试。~
https://www.cloudxns.net/Support/detail/id/1062.html
typcn
2015-12-25 18:30:30 +08:00
@CloudXNS 才发现 cloudxns 免费版都自带全球解析加速,在国外相当于免费的 amazon route 53
CloudXNS
2015-12-28 13:47:12 +08:00
@typcn 我们免费版和收费版的解析是一样的。
janecc
2016-01-25 13:02:17 +08:00
不支持阿里 DNS ,怎么破解
clanned
2016-01-25 13:04:07 +08:00
@janecc 临时把 ns 解析切换到国外或者国内可用的服务商
baiyuxiong
2016-01-29 20:56:40 +08:00
这四个参数都表示什么意思?

ACCOUNT_KEY="letsencrypt-account.key"
DOMAIN_KEY="example.com.key"
DOMAIN_DIR="/var/www/example.com"
DOMAINS="DNS:example.com,DNS:whatever.example.com"
baiyuxiong
2016-01-29 21:13:50 +08:00
为什么没有 fullchain.pem 和 privkey.pem ?
nginx 应该怎么配置?
a308057848
2016-02-03 17:21:47 +08:00
ACCOUNT_KEY 去哪里拿
clanned
2016-02-03 17:58:52 +08:00
@a308057848 "执行过程中会自动生成需要的 key 文件。", 设置好名字就行,会自动生成。
Remember
2016-02-08 11:30:45 +08:00
@clanned 支持 ecdsa 证书么
panlilu
2016-02-08 16:33:53 +08:00
已用,非常赞,感谢已送上。
leobin
2016-03-03 17:18:16 +08:00
出现错误求教

Generate CSR...leob.csr
error on line -1 of /dev/fd/63
3073984776:error:02001002:system library:fopen:No such file or directory:bss_file.c:169:fopen('/dev/fd/63','rb')
3073984776:error:2006D080:BIO routines:BIO_new_file:no such file:bss_file.c:172:
3073984776:error:0E078072:configuration file routines:DEF_LOAD:no such file:conf_def.c:197:
Parsing account key...
Parsing CSR...
Traceback (most recent call last):
File "/tmp/acme_tiny.py", line 198, in <module>
main(sys.argv[1:])
File "/tmp/acme_tiny.py", line 194, in main
signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, log=LOGGER, CA=args.ca)
File "/tmp/acme_tiny.py", line 70, in get_crt
raise IOError("Error loading {0}: {1}".format(csr, err))
IOError: Error loading leob.csr: unable to load X509 request
3074353416:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: CERTIFICATE REQUEST
clanned
2016-03-03 17:44:08 +08:00
@leobin 什么系统环境的?我也不清楚这个是什么问题
leobin
2016-03-03 21:13:28 +08:00
@clanned 好吧,是 debian7 ,我用官方教程装好了
Faratv2
2016-03-30 12:38:11 +08:00
@leobin
@clanned
和 56 楼遇到了一样的问题
yidongnan
2016-04-12 12:37:58 +08:00
@baiyuxiong fullchain.pem 和 privkey.pem 的问题解决了吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/241819

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX