本文是以 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 也要修改为你的域名。
那么,我给你们圈出来:


修改好后把脚本保存为 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 目录均是以默认路径。
叨叨几句... 15 条评论
那么问题来了,用虚拟主机的小伙伴该如何是好
@淘气
那就要看你主机商支不支持了嘞……
有些貌似是支持的。
膜拜大佬
@大林
不不不,您才是dalao。
你这个鼠标特效好辣鸡
(小声的告诉我代码在哪里,我也想要)
@茗血
(网页源代码最后一个注释标签有3句)
哼,都想要,就不给
@后宫学长
这还差不多
@茗血
哼。
顺便说一句,你的表情在邮件里不显示,表情在邮件里是相对地址,建议把表情地址改成绝对的
@茗血
唔……
那么请问你有什么办法让JSON文件内的路径通过PHP函数获取绝对路径么?
因为不想因为URL换了还要去手动改,特别是主题要是给别人用了的话…
@后宫学长
哪有那么麻烦,去评论页面和模板函数页面给这些表情加上你的网址就行了啊。
@茗血
要不就加上博客地址函数试试。
@茗血
然而没那么厉害啊,不懂加。
不明觉历啊。
@wu先生
过奖过奖。