本文是以 LET'S ENCRYPT 证书进行任务。
以文章“一个快速获取/更新 LET'S ENCRYPT 证书的 SHELL SCRIPT”进行整理并实践使用。

经认真查看,宝塔自带续期,3个月一续……
不过教程我也懒得改了。

打开SSH工具连接你的VPS;

创建作业文件夹

OneinStack

mkdir /data/ssl
cd /data/ssl

宝塔面板

mkdir /www/ssl
cd /www/ssl

下载SSL签证脚本

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

修改脚本配置文件

ACCOUNT_KEY="letsencrypt-account.key"
DOMAIN_KEY="example.com.key"
DOMAIN_DIR="/var/www/example.com"
DOMAINS="DNS:example.com,DNS:whatever.example.com"
#ECC=TRUE
#LIGHTTPD=TRUE

其中:
DOMAIN_KEY 修改为你的域名;
DOMAIN_DIR 修改为你域名在VPS上绑定的目录,绝对路径;
DOMAINS 修改为你要签证的域名,多个域名用英文逗号隔开。

注意:
签证的多个域名必须是同一个目录才能同时签证,否则需要再配置一个新的配置文件。
比如:
A 域名和 B 域名都是访问VPS上的 X 目录,就可以同时签证;
A 域名访问的是VPS上的 A 目录,B 域名访问的是VPS上的 B 目录,那么就要分开签证啦……

务必准确修改配置,因为需要验证域名根目录下的文件夹。

修改OK后保存。

在线签证域名新证书

在SSH工具上执行:

./letsencrypt.sh letsencrypt.conf

若签证成功,将会在当前目录下生成以域名命名的新文件:

lets-encrypt-x1-cross-signed.pem
example.chained.crt             # 又名 fullchain.pem
example.com.key                 # 又名 privkey.pem 
example.crt
example.csr

若验证失败,请确定脚本的配置文件是否正确,还听说有些VPS商屏蔽了 LET'S ENCRYPT 的访问……

写个新证书复制脚本

在 Windows 系统编写需要以UNIX格式保存,最好在Linux系统内编写保存,否则脚本提示没有目录……

OneinStack,以 Nginx 为例:

#!/bin/sh
cp -rf /data/ssl/example.chained.crt /usr/local/nginx/conf/ssl/example.com.crt
cp -rf /data/ssl/example.csr /usr/local/nginx/conf/ssl/example.com.csr
cp -rf /data/ssl/example.com.key /usr/local/nginx/conf/ssl/example.com.key

宝塔面板,以 Apache 为例:

#!/bin/sh
cp -rf /www/ssl/example.chained.crt /etc/letsencrypt/archive/example.com/fullchain1.pem
cp -rf /www/ssl/example.com.key /etc/letsencrypt/archive/example.com/privkey1.pem

注意:
你应该也注意到哪些地方要修改的,脚本中除了要写对被复制的文件名和目标文件名;
宝塔面板用户还需要注意的是,目标路径中的 example.com 也要修改为你的域名。

那么,我给你们圈出来:





这还看不懂,还看不清楚,还不注意到,我TM……

修改好后把脚本保存为 example.com.sh ,保存在本文开头创建的 ssl 目录里面。

复制证书到 Web Service 目录

在SSH工具上执行:

chmod +x example.com.sh
./example.com.sh

就这样,证书复制完毕。

添加证书自动续期任务

在SSH工具上执行:

crontab -e

Ubuntu 系统第一次使用 crontab 的话,会给出个选择编辑器的选择,默认编辑器是 nano ,自己选择熟悉的编辑器即可编辑定时任务。

添加新任务:

0 5 1 * * /data/ssl/letsencrypt.sh /data/ssl/letsencrypt.conf >> /data/ssl/letsencrypt.log 2>&1
1 5 1 * * /data/ssl/example.com.sh

每月 1 号 05 点 00 分自动签证新的证书。
每月 1 号 05 点 01 分自动复制新证书。


至此,教程完毕。
本文举栗子的 Web Service 目录均是以默认路径。


公交车司机终于在众人的指责中将座位让给了老太太