本文主要介紹如何使用acme.sh工具來(lái)申請(qǐng)let's encrypt的泛域名證書(shū)。
1驶臊、安裝acme.sh
安裝acme.sh之前我們需要先安裝必要的工具和依賴
yum install socat curl -y
接著我們安裝acme.sh胎署,過(guò)程比較簡(jiǎn)單,只需要執(zhí)行下列操作即可自動(dòng)安裝病瞳。對(duì)于安裝的用戶勤讽,官方聲稱可以使用root用戶或者普通用戶铲敛,這里我們使用root用戶進(jìn)行操作。
curl https://get.acme.sh | sh
安裝的過(guò)程比較簡(jiǎn)單管嬉,會(huì)在目錄下創(chuàng)建一個(gè)隱藏目錄皂林,所有的相關(guān)文件都會(huì)存放在這里,同時(shí)還會(huì)創(chuàng)建一個(gè)crontab來(lái)定時(shí)執(zhí)行任務(wù)檢測(cè)證書(shū)蚯撩。
[root@aliyun /root]# pwd
/root
[root@aliyun /root]# curl https://get.acme.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 775 0 775 0 0 963 0 --:--:-- --:--:-- --:--:-- 962
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 201k 100 201k 0 0 47150 0 0:00:04 0:00:04 --:--:-- 47156
[Fri Nov 27 09:50:57 CST 2020] Installing from online archive.
[Fri Nov 27 09:50:57 CST 2020] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[Fri Nov 27 09:51:00 CST 2020] Extracting master.tar.gz
[Fri Nov 27 09:51:00 CST 2020] Installing to /root/.acme.sh
[Fri Nov 27 09:51:00 CST 2020] Installed to /root/.acme.sh/acme.sh
[Fri Nov 27 09:51:00 CST 2020] Installing alias to '/root/.bashrc'
[Fri Nov 27 09:51:00 CST 2020] OK, Close and reopen your terminal to start using acme.sh
[Fri Nov 27 09:51:00 CST 2020] Installing alias to '/root/.cshrc'
[Fri Nov 27 09:51:00 CST 2020] Installing alias to '/root/.tcshrc'
[Fri Nov 27 09:51:00 CST 2020] Installing cron job
21 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
[Fri Nov 27 09:51:00 CST 2020] Good, bash is found, so change the shebang to use bash as preferred.
[Fri Nov 27 09:51:01 CST 2020] OK
[Fri Nov 27 09:51:01 CST 2020] Install success!
[root@aliyun /root]# crontab -l
21 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
[root@aliyun /root]# ll -A | grep acme
drwx------ 5 root root 4.0K Nov 27 09:51 .acme.sh
2础倍、配置阿里云DNS解析
由于泛域名證書(shū)申請(qǐng)的時(shí)候需要使用DNS解析作為認(rèn)證,為了保證自動(dòng)申請(qǐng)證書(shū)成功胎挎,我們需要申請(qǐng)一個(gè)Access_Key來(lái)進(jìn)行操作沟启,這里以阿里云為例
[root@aliyun /root/.acme.sh/dnsapi]# pwd dns_ali.sh
/root/.acme.sh/dnsapi
在里面找到Ali_Key
和Ali_Secret
兩個(gè)字段,將申請(qǐng)到的阿里云access_key
填入里面犹菇,注意在阿里云中創(chuàng)建了子用戶之后德迹,需要授予對(duì)應(yīng)的權(quán)限才能對(duì)DNS解析進(jìn)行操作
3、生成證書(shū)
我們以阿里云DNS申請(qǐng)泛域名證書(shū)為例揭芍,執(zhí)行下列命令則可以生成對(duì)應(yīng)的證書(shū)
./acme.sh --issue --dns dns_ali -d tinychen.com -d *.tinychen.com
對(duì)于ecc證書(shū)胳搞,我們只需要在后面加上--keylength ec-256
./acme.sh --issue --dns dns_ali -d tinychen.com -d *.tinychen.com --keylength ec-256
對(duì)于生成的證書(shū),證書(shū)鏈和公鑰是分開(kāi)的称杨,在nginx中肌毅,為了保證證書(shū)的完整性,我們一般使用帶有證書(shū)鏈的公鑰姑原,也就是對(duì)應(yīng)這里生成的fullchain.cer
文件就包含了公鑰和證書(shū)鏈悬而,我們可以直接使用。