KoolShare

 找回密码
 立即注册
搜索
查看: 21179|回复: 49

[教程] LEDE申请并部署Let's encrypt证书的教程

  [复制链接]

33

主题

111

帖子

863

积分

高级魔法师

Rank: 4

精华
0
门户文章
1
魔力币
402
魔法值
10
注册时间
2016-4-13

AC68U

发表于 2017-11-1 18:58:49 | 显示全部楼层 |阅读模式
本帖最后由 shuilixiang 于 2017-11-1 19:01 编辑

之前看过这个在ASUS固件上部署证书的帖子:https://koolshare.cn/thread-79146-1-1.html 然而ASUS固件系统由于各种限制,acme起来非常不方便,虽然我依样画葫芦在LEDE上也签发了证书,但是很不幸的是很多操作和LEDE不同,所以自己整理了一下,写在这自己备用。

由于lede的扩展性远超过ASUS固件,因此在LEDE上部署证书比ASUS固件方便的多。

安装

由于ASUS固件上home文件夹的内容会在重启后消失,因此ASUS固件上安装教程用的是解压缩方式安装在jffs,而LEDE直接用curl就好了,直接会装在root里,方便快捷,还能自动添加cronjob60天后自动签发新的,不用手填了。
  1. curl  https://get.acme.sh | sh
复制代码
可以看到已经添加了计划任务
TIM图片20171101180815.png
签发
首先进入acme.sh目录
  1. cd /root/.acme.sh
复制代码


一般签发域名都用DNS方式,签发有两种方式一种是普通dns签发,一种是用api,由于我之前用api经常出错,所以也可用普通dns签发,就是麻烦点。
普通DNS签发
在acme.sh目录下输入
  1. ./acme.sh --issue --dns -d 你要申请签发的网址
复制代码
然后系统会提示你要在DNS解析里添加一条TXT解析:_challenge.你的网址前缀,比如你要注册的网址是 router.koolshrare.com,你就要添加_challenge.router作为解析前缀 然后TXT内容填上面的运行中出现的一串key
之后稍等几分钟等待解析刷新,在renew就行了
  1. ./acme.sh --renew -d 你要申请签发的网址
复制代码


API签发

API一般坛子里最常用的是dnspod或者阿里云,因此就说这两种,其他的看这:https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md

需要注意的是,如果你的解析里已经有_challenge.你的网址前缀的TXT解析了,请删掉,否则会出错

dnspod

去DNSPOD官网添加一套API Key 包括一个id 和一个key


然后先输入(XXXX替换为ID和key):
  1. echo -e "DP_Id='XXXXX'\nDP_Key='XXXXX'" >>/root/.acme.sh/account.conf
复制代码


然后输入
  1. ./acme.sh --issue --dns dns_dp -d 你要签发的域名
复制代码
需要注意DNSpod的API每小时有请求次数限制,到了次数后就暂时不让使用了,要等一会才能用

阿里云
去阿里云控制台添加一套Secret key(需要手机验证码):https://ak-console.aliyun.com/#/accesskey
然后先输入(XXXX替换为key和Secret
  1. echo -e "Ali_Key='XXXXX'\nAli_Secret='XXXXX'" >>/root/.acme.sh/account.conf
复制代码

接着输入
  1. ./acme.sh --issue --dns dns_ali -d 你要签发的域名
复制代码


打开443监听
默认uhttpd并没有打开443监听,所以先要修改uhttpd的配置文件

输入:
  1. vi /etc/config/uhttpd
复制代码
打开配置文件后对配置文件进行修改(如何用vi编辑请自行搜索),在list listen_proxy '127.0.0.1:8000' 下一行添加443监听
  1. list listen_https '0.0.0.0:443'
复制代码
然后保存即可

当然如果你有winscp,可以直接用winscp修改文件。
安装证书并重启uhttpd
DELE用的是uhttpd,因此安装证书的地方与ASUS固件不同,重启服务的命令也不一样,所以要修改安装的地方,reload指令也要修改。
  1. ./acme.sh --installcert -d 你注册的网址 --keypath /etc/uhttpd.key --fullchainpath /etc/uhttpd.crt --reloadcmd "/etc/init.d/uhttpd restart"
复制代码

打开443端口并转发
在防火墙内添加wan口的443端口规则,打开443端口,
TIM截图20171101185255.png
并且在转发规则里添加将外部端口转发到443端口,由于部分ISP封了443端口,我为了以防万一用的是8443
TIM截图20171101185326.png

设定好后保存。


然后输入https://你的网址:外部转发的端口(比如https:router.koolshre.com:8443),享受加密的乐趣吧,加密之后,可以把80端口关闭了。
TIM图片20171101185605.png TIM图片20171101185643.png
60天一签发自动更新证书,当然如果你想自己强制签发只需要使用renew指令就好了,然后在用安装指令安装一遍就好



评分

3

查看全部评分

27

主题

353

帖子

605

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
464
魔法值
0
注册时间
2016-10-27
发表于 2017-11-2 12:17:20 | 显示全部楼层
正好有用

2

主题

17

帖子

87

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
82
魔法值
0
注册时间
2017-10-28
发表于 2017-11-2 16:48:41 | 显示全部楼层
大佬,用了第一个命令就报错了:
信息:
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (77) Error reading ca cert file /etc/ssl/certs/ca-certificates.crt - mbedTLS: (-0x3E00) PK - Read/write of file failed

33

主题

111

帖子

863

积分

高级魔法师

Rank: 4

精华
0
门户文章
1
魔力币
402
魔法值
10
注册时间
2016-4-13

AC68U

 楼主| 发表于 2017-11-2 17:00:18 来自手机 | 显示全部楼层
文之君子 发表于 2017-11-2 16:48
大佬,用了第一个命令就报错了:
信息:
% Total    % Received % Xferd  Average Speed   Time    Time   ...

再试一次,之前我也报错过

14

主题

763

帖子

1176

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
932
魔法值
0
注册时间
2017-2-8
发表于 2017-11-2 21:11:36 | 显示全部楼层
已经上了阿里云,就直接用赛门铁克的免费证书吧,有效期一年,方便。
Snipaste_2017-11-02_21-10-29.png

10

主题

275

帖子

1109

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
972
魔法值
0
注册时间
2016-5-20
发表于 2017-11-2 21:33:14 | 显示全部楼层
感谢分享,之前都是手动的,现在可以不用操心了。 请教一下,“安装证书并重启uhttpd”这部分的命令,是acme在申请到新证书后自动执行的,还是每次自动申请完后要手动执行?要是能手动执行就好了,因为我不知道acme什么时候会去申请新证书。

33

主题

111

帖子

863

积分

高级魔法师

Rank: 4

精华
0
门户文章
1
魔力币
402
魔法值
10
注册时间
2016-4-13

AC68U

 楼主| 发表于 2017-11-2 21:35:31 | 显示全部楼层
kangyu1230 发表于 2017-11-2 21:33
感谢分享,之前都是手动的,现在可以不用操心了。 请教一下,“安装证书并重启uhttpd”这部分的命令, ...

reloadcmd 应该是重载证书指令的意思 应该是每1个月运行一次再签发检测的时候,如果证书有效期小于一个月就自动签发,然后运行这个指令,每种平台上不一样,因此这里写的是重启uhttpd的指令,ASUS固件就不是这个

10

主题

275

帖子

1109

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
972
魔法值
0
注册时间
2016-5-20
发表于 2017-11-2 22:09:07 | 显示全部楼层
shuilixiang 发表于 2017-11-2 21:35
reloadcmd 应该是重载证书指令的意思 应该是每1个月运行一次再签发检测的时候,如果证书有效期小于一个月 ...

自动签发证书后会自动运行reloadcmd这个指令吗?保险起见我干脆在crontab里加一个每周执行一次reloadcmd这部分的命令得了

27

主题

353

帖子

605

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
464
魔法值
0
注册时间
2016-10-27
发表于 2017-11-2 22:10:30 | 显示全部楼层
普通DNS签发,是不是./acme.sh --issue --dns -d 以后,再去比如我的DDNS服务商那添加带前缀的域名?没怎么看懂。。

33

主题

111

帖子

863

积分

高级魔法师

Rank: 4

精华
0
门户文章
1
魔力币
402
魔法值
10
注册时间
2016-4-13

AC68U

 楼主| 发表于 2017-11-2 22:42:53 来自手机 | 显示全部楼层
kangyu1230 发表于 2017-11-2 22:09
自动签发证书后会自动运行reloadcmd这个指令吗?保险起见我干脆在crontab里加一个每周执行一次reloadcmd ...

对的,如果指令不存在会报错,之前我依样画葫芦的时候就是把ASUS固件重启httpd的指令原封不动搬来,结果就报错了

33

主题

111

帖子

863

积分

高级魔法师

Rank: 4

精华
0
门户文章
1
魔力币
402
魔法值
10
注册时间
2016-4-13

AC68U

 楼主| 发表于 2017-11-2 22:47:43 来自手机 | 显示全部楼层
funison 发表于 2017-11-2 22:10
普通DNS签发,是不是./acme.sh --issue --dns -d 以后,再去比如我的DDNS服务商那添加带前缀的域名?没怎么 ...

比如你注册的根域名是xxx.con,ddns是指向了lede.xxx.com,你-d 后面填的就该是ddns这个域名,当然你也可以给根域名签发一个证书,多带几个-d 就行,只不过一般也不会直接用根域名,所以签发多此一举

27

主题

353

帖子

605

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
464
魔法值
0
注册时间
2016-10-27
发表于 2017-11-2 22:56:39 | 显示全部楼层
shuilixiang 发表于 2017-11-2 22:47
比如你注册的根域名是xxx.con,ddns是指向了lede.xxx.com,你-d 后面填的就该是ddns这个域名,当然你也可 ...

请教一下具体问题吧,比如我已经./acme.sh --issue --dns -d lede.xxx.com 它提示要加前缀,还给了TXT,这些该怎么用呢,我到这里给卡住了。

33

主题

111

帖子

863

积分

高级魔法师

Rank: 4

精华
0
门户文章
1
魔力币
402
魔法值
10
注册时间
2016-4-13

AC68U

 楼主| 发表于 2017-11-2 23:07:23 来自手机 | 显示全部楼层
funison 发表于 2017-11-2 22:56
请教一下具体问题吧,比如我已经./acme.sh --issue --dns -d lede.xxx.com 它提示要加前缀,还给了TXT, ...

然后去你解析平台的控制台里添加一个TXT解析
这个解析的前缀是 _chllange.前缀

比如例子前缀是lede,你解析的前缀就是_chllange.lede

解析内容就填后面给出的一长串序列号一样的东西,等几分钟解析生效后,再用下一个renew指令签发。

27

主题

353

帖子

605

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
464
魔法值
0
注册时间
2016-10-27
发表于 2017-11-2 23:14:12 | 显示全部楼层
shuilixiang 发表于 2017-11-2 23:07
然后去你解析平台的控制台里添加一个TXT解析
这个解析的前缀是 _chllange.前缀

未标题-1 拷贝.jpg

类型哪个是TXT的。。。


33

主题

111

帖子

863

积分

高级魔法师

Rank: 4

精华
0
门户文章
1
魔力币
402
魔法值
10
注册时间
2016-4-13

AC68U

 楼主| 发表于 2017-11-2 23:15:39 来自手机 | 显示全部楼层
funison 发表于 2017-11-2 23:14
类型哪个是TXT的。。。

你这个不支持txt解析,玩完
还有一种方法是传验证文件到路由器上,那个就麻烦了

27

主题

353

帖子

605

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
464
魔法值
0
注册时间
2016-10-27
发表于 2017-11-2 23:19:16 | 显示全部楼层
shuilixiang 发表于 2017-11-2 23:15
你这个不支持txt解析,玩完
还有一种方法是传验证文件到路由器上,那个就麻烦了 ...

好的,我自己研究研究,谢谢了!

2

主题

17

帖子

87

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
82
魔法值
0
注册时间
2017-10-28
发表于 2017-11-3 08:15:45 | 显示全部楼层
shuilixiang 发表于 2017-11-2 17:00
再试一次,之前我也报错过

试过很多次都不行,包括软件包安装了ca-certificates,但是还是报错,检查了/etc/ssl/certs/,发现没有ca-certificates.crt这个文件。。。

33

主题

111

帖子

863

积分

高级魔法师

Rank: 4

精华
0
门户文章
1
魔力币
402
魔法值
10
注册时间
2016-4-13

AC68U

 楼主| 发表于 2017-11-3 08:51:19 来自手机 | 显示全部楼层
文之君子 发表于 2017-11-3 08:15
试过很多次都不行,包括软件包安装了ca-certificates,但是还是报错,检查了/etc/ssl/certs/,发现没有ca ...

今天软件中心上架插件版的acme了……你可以试试

2

主题

17

帖子

87

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
82
魔法值
0
注册时间
2017-10-28
发表于 2017-11-3 11:16:03 | 显示全部楼层
本帖最后由 文之君子 于 2017-11-3 11:18 编辑
shuilixiang 发表于 2017-11-3 08:51
今天软件中心上架插件版的acme了……你可以试试

感谢,用opkg install acme解决了这个问题。
然后我用的是aliddns,api模式。到这一步的时候./acme.sh --issue --dns dns_ali -d 你要签发的域名
报错:Error add txt for domain:_acme-challenge.xxx.xxx.com.--debug后的信息:
opensslpenssl
OpenSSL 1.0.2l  25 May 2017
apache:
apache doesn't exists.
nginx:
nginx doesn't exists.
socat:


33

主题

111

帖子

863

积分

高级魔法师

Rank: 4

精华
0
门户文章
1
魔力币
402
魔法值
10
注册时间
2016-4-13

AC68U

 楼主| 发表于 2017-11-3 12:03:04 | 显示全部楼层
文之君子 发表于 2017-11-3 11:16
感谢,用opkg install acme解决了这个问题。
然后我用的是aliddns,api模式。到这一步的时候./acme.sh --i ...

我不说有插件版的了。。。直接用插件版不就完事了

联系我们|手机版|KoolShare ( 沪ICP备13045430号962110 沪公网备31010402005377

GMT+8, 2021-1-20 11:49 , Processed in 0.111480 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表