一招直接变永久,证书 90 天够谁用!!
点击关注公众号,“技术干货” 及时达!
前言🔔
大家好,我是聪👦,最近啊我的证书📑也到期了,每次到期我都要上服务商管理端来瞎捣鼓一番来一波续费,之前免费证书时间挺长的还好说,现在证书 90 天就到期,这谁受的了啊,机缘巧合下,我在 github 上面看到了一款自动续期神器,我身边的朋友也在用🔊 acme.sh,中文说明地址🔍:https://github.com/acmesh-official/acme.sh/wiki/说明 ,喜欢探索的朋友可以自己跟着文档来操作一波,像我就喜欢图文直接抄!想要这样的朋友跟着我下面的教程来吧。
安装流程🔧
安装 acme.sh
先看看官方文档📑!easy 一条命令搞定是吧!(还真踩坑),文档如下🔽:
好一条命令搞定,但是我的服务器在国内啊(京东云),难顶卡住不动了,就是下面这样的情况:
怎么办呢,我请求了它的 sh 脚本 https://get.acme.sh ,看到了如下图:
早说啊!我卡死了一分钟!直接访问地址:https://github.com/acmesh-official/acme.sh/wiki/Install-in-China
看到了国内的命令,命令如下🔽:
git clone https://gitee.com/neilpang/acme.sh.gitcd acme.sh./acme.sh --install -m [email protected]
生成证书
先看看官方文档📑,文档如下🔽:
我这里选择了 DNS 验证,我个人感觉比较方便:
先找到你的厂商 API 点进去 https://github.com/acmesh-official/acme.sh/wiki/dnsapi,这里以京东云为例🌰:
找到关键字 jd 然后点进去:
就可以看见关键步骤了!如下图:
首先先去京东云控制台申请☝️个 apikey https://uc.jdcloud.com/account/accesskey,我这边申请好了。
第二步将他们的 key、secret 设置为环境变量
export JD_ACCESS_KEY_ID="<key id>"export JD_ACCESS_KEY_SECRET="<secret>"
第三部生成证书(这里的 example.com改成你自己的域名即可 像我的是 codebug.icu)
./acme.sh --issue --dns dns_jd -d example.com -d *.example.com在此期间等待执行就好了,可能会一点时间,因为还要等待证书生效
复制证书
先看看官方文档📑,文档如下🔽:
我这边是 nginx 所以使用官方命令 nginx 示例就行(由于我的 nginx 使用 docker 安装,则后面的重启命令改为 docker restart nginx 即可),命令如下:
acme.sh --install-cert -d example.com \--key-file /path/to/keyfile/in/nginx/key.pem \--fullchain-file /path/to/fullchain/nginx/cert.pem \--reloadcmd "docker restart nginx"
这里说明下:
/path/to/certfile/in/apache 就是你想要把证书放到哪个路径下面,直接用默认或者你自己改都可以,后续配置nginx 的证书时要改成这个路径。 reloadcmd非常重要。证书会自动申请续签,但是如果没有正确的reloadcmd命令,证书可能无法被重新应用到 Apache 或者 Nginx,因为配置没有被重载。
修改配置 nginx 的 config 文件
这步官方文档似乎没有提及,但我修改完配置文件然后重启就生效了,大家可以参考一下:
主要是改动 ssl_certificate、ssl_certificate_key 两个地方为你的配置文件地址
server {listen 80;listen [::]:80;server_name codebug.icu;rewrite ^(.*) https://$server_name$1 permanent;}server {listen 443 ssl;server_name codebug.icu;ssl_certificate /path/to/keyfile/in/nginx/cert.pem;ssl_certificate_key /path/to/keyfile/in/nginx/key.pem;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {root /usr/share/nginx/html;index index.html;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}}
修改完记得重启 nginx 哦,我的重启命令是 docker restart nginx
(扩展📜)更新证书
目前证书每 60 天自动更新,你无需任何操作。
但是你也可以强制续签证书:
acme.sh --renew -d example.com --force展示成果🚀
最后💡
执行完上述操作,你的证书已经会每 60 天自动更新,也就是永久证书了,妈妈再也不用担心我的证书过期啦!
点击关注公众号,“技术干货” 及时达!