根据接口文档,可以编写满足需求的bash文件,实现自动部署功能。
一种实现案例(依赖:openssl,unzip):
主要参数说明:
ORDER_ID:证书ID
TYPE:证书ID类型。参见证书下载接口,建议auto。
API_TOKEN:接口凭证,在后台获取。
API_USER:账户名。注册的邮箱或者手机号。
#!/usr/bin/env bashexport PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin# 参数配置 开始ORDER_ID='*****'TYPE='auto'API_TOKEN='**************'API_USER='**************'FILE_CERT='/www/server/panel/vhost/cert/fullchain.pem'FILE_CERT_KEY='/www/server/panel/vhost/cert/privkey.pem'COMAND_RELOAD='nginx -s reload'# 参数配置 结束# 以下内容根据需求修改# 证书到期前13天内才会更新isexpire=`openssl x509 -in ${FILE_CERT} -noout -enddate -checkend 9123200`if echo "${isexpire}" | grep " not " ; thenecho "Certificate will not expire."exit 1fiAPI_URL='https://api.osfipin.com/letsencrypt/api'URL_ORDER_DOWN="${API_URL}/order/down"HEADER_AUTHOR="Authorization: Bearer ${API_TOKEN}:${API_USER}"ZIP_FILE="${ORDER_ID}.$RANDOM"curl ${URL_ORDER_DOWN} -H "${HEADER_AUTHOR}" -G -d "id=${ORDER_ID}" -d "type=${TYPE}" -o ${ZIP_FILE}.zipif [ ! -s "${ZIP_FILE}.zip" ]; thenecho "download error."exit 1fisize=`du -b ${ZIP_FILE}.zip | awk '{print $1}'`if [[ ${size} -lt 500 ]]; thenecho "download file error."cat ${ZIP_FILE}.zipunlink ${ZIP_FILE}.zipexit 1fi# 解压 移动文件mkdir -p ${ZIP_FILE}unzip ${ZIP_FILE}.zip -d ${ZIP_FILE}/bin/cp ${ZIP_FILE}/fullchain.crt ${FILE_CERT}/bin/cp ${ZIP_FILE}/private.pem ${FILE_CERT_KEY}# 删除 打完收工unlink ${ZIP_FILE}.ziprm -rf ${ZIP_FILE}`${COMAND_RELOAD}`
