以前有配置过acme.sh 配置也比较方便,后面由于图片使用七牛的oss也使用了,配置oss的ssl证书,也就是cdn的ssl. 使用的都是90天的证书,当时使用了httpsok.com平台,但是后面发现它证书是有额度限制,想要你付费,充钱是不可能的,就有的下面的文章
配置acme.sh 定时更新证书
1. 安装 acme.sh
如果尚未安装 acme.sh,切换到常用安装目录下通过以下命令安装,并加载环境变量和系统配置::
cd /opt/
git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m your_email@example.com
source ~/.bashrc
2. 获取阿里云 DNS API 密钥
我用的是阿里云,腾讯云的方法也是一样的,就创建一个用户,指定只有创建dns的权限,然后获取ak sk 就行了。
这里就有描述了,自行百度
3. 配置阿里云 AK SK
上一步获取到的 AccessKey ID 和 AccessKey Secret API 秘钥,配置到 acme.sh 中:
cd /opt/acme.sh/
vim acme.sh
export Ali_Key="your_aliyun_access_key"
export Ali_Secret="your_aliyun_access_secret"
4. 申请 SSL 证书并自动续期

我nginx 里面之前已经配置好了证书位置以及配置,我下发时候写相同文件名和路径就可以了。
申请证书
acme.sh --issue --dns dns_ali -d blog.buwo.ne
acme.sh --install-cert -d blog.buwo.net \
--keypath /etc/nginx/conf.d/ssl/all.buwo.net.key \
--fullchainpath /etc/nginx/conf.d/ssl/all.buwo.net.pem \
--reloadcmd "systemctl reload nginx"
5.自动设置定时任务,定期检查并更新证书,无需手动操作。
crontab -e
36 1 * * * "/opt/acme.sh"/acme.sh --cron --home "/opt/acme.sh" > /dev/null
6. acme常用命令
##查看证书列表:
acme.sh --list
##查看证书信息:
acme.sh --info -d example.com
##手动续期证书:
acme.sh --renew -d example.com
##删除证书
acme.sh --remove -d example.com

七牛cdn自动配置证书
需要使用pip3 安装qiniu 模块
cat update_qiniucdn.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from qiniu import Auth
import os
import sys
import requests
import datetime
# cert_domain = '替换你的七牛云域名,参照下面的示例'
cert_domain = 'static.blog.buwo.net'
# ak sk 信息 替换你的七牛云aksk
access_key = 'XXXXXXX4JvaA6K-WlEKL3L1LTOuGMufiAonp_'
secret_key = '_KWnQ07ZBH9RYzgW7XXXXXXXXXXXXXXXX'
print('CERT_DOMAIN: ' + cert_domain)
print('QINIU_ACCESS_KEY: ' + access_key)
print('QINIU_SECRET_KEY: ' + secret_key)
# 构建七牛鉴权对象
auth = Auth(access_key, secret_key)
# 上传证书
## 上传 api 地址 这里是七牛的
sslcertUploadUrl = 'http://api.qiniu.com/sslcert'
## 生成 上传证书 api accesstoken
sslcert_accesstoken = auth.token_of_request(sslcertUploadUrl)
print('上传证书 api accesstoken: ' + sslcert_accesstoken)
## 证书信息
sslcertFolder = '/etc/nginx/conf.d/ssl/'
sslcertPriFile = open(sslcertFolder + '/static.blog.buwo.net.key')
sslcertChainFile = open(sslcertFolder + '/static.blog.buwo.net.pem')
sslcertPriStr = sslcertPriFile.read()
sslcertChainStr = sslcertChainFile.read()
nowDate = datetime.date.today().strftime("%Y%m%d")
sslcertData = {
'name': cert_domain + '-letsencrypt-' + nowDate,
'common_name': cert_domain,
'pri': sslcertPriStr,
'ca': sslcertChainStr
}
sslcertHeaders = {
'Authorization': 'QBox ' + sslcert_accesstoken,
'Content-Type': 'application/json'
}
print('证书JSON数据如下:')
print(sslcertData)
## 执行请求
sslcertUploadResponse = requests.post(sslcertUploadUrl, json=sslcertData, headers=sslcertHeaders).json()
print(sslcertUploadResponse)
certID = sslcertUploadResponse['certID']
if certID is None:
print('证书上传失败!')
sys.exit()
# 修改 cdn 证书
## 修改证书 api 地址
cdnHttpsconfUrl = 'http://api.qiniu.com/domain/{}/httpsconf'.format(cert_domain)
## 生成 cdn 修改证书 api accesstoken
cdn_httpsconf_accesstoken = auth.token_of_request(cdnHttpsconfUrl)
print('修改证书 api accesstoken: ' + cdn_httpsconf_accesstoken)
## 执行修改请求
httpsconfData = {
'certId': certID,
'forceHttps': False,
'http2Enable': True
}
httpsconfHeaders = {
'Authorization': 'QBox ' + cdn_httpsconf_accesstoken,
'Content-Type': 'application/json'
}
httpsconfResponse = requests.put(cdnHttpsconfUrl, json=httpsconfData, headers=httpsconfHeaders).json()
print(httpsconfResponse)
print('修改七牛 CDN SSL 证书完成~')
申请cdn证书
acme.sh --issue --dns dns_ali -d cdn.rangotec.com
acme.sh --install-cert -d cdn.rangotec.com \
--keypath /etc/nginx/conf.d/ssl/static.blog.buwo.net.key \
--fullchainpath /etc/nginx/conf.d/ssl/static.blog.buwo.net.pem \
--reloadcmd "/usr/bin/python3 /opt/update_qiniucdn.py"
再登录七牛云选择→CDN 查看证书的有效期就 会自动更新证书并更新七牛云的证书


Comments | NOTHING