根据接口文档,可以编写满足需求的bash文件,实现自动部署功能。
    一种实现案例(依赖:openssl,unzip):
    主要参数说明:
    ORDER_ID:证书ID
    TYPE:证书ID类型。参见证书下载接口,建议auto。
    API_TOKEN:接口凭证,在后台获取。
    API_USER:账户名。注册的邮箱或者手机号。

    1. #!/usr/bin/env bash
    2. export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    3. # 参数配置 开始
    4. ORDER_ID='*****'
    5. TYPE='auto'
    6. API_TOKEN='**************'
    7. API_USER='**************'
    8. FILE_CERT='/www/server/panel/vhost/cert/fullchain.pem'
    9. FILE_CERT_KEY='/www/server/panel/vhost/cert/privkey.pem'
    10. COMAND_RELOAD='nginx -s reload'
    11. # 参数配置 结束
    12. # 以下内容根据需求修改
    13. # 证书到期前13天内才会更新
    14. isexpire=`openssl x509 -in ${FILE_CERT} -noout -enddate -checkend 9123200`
    15. if echo "${isexpire}" | grep " not " ; then
    16. echo "Certificate will not expire."
    17. exit 1
    18. fi
    19. API_URL='https://api.osfipin.com/letsencrypt/api'
    20. URL_ORDER_DOWN="${API_URL}/order/down"
    21. HEADER_AUTHOR="Authorization: Bearer ${API_TOKEN}:${API_USER}"
    22. ZIP_FILE="${ORDER_ID}.$RANDOM"
    23. curl ${URL_ORDER_DOWN} -H "${HEADER_AUTHOR}" -G -d "id=${ORDER_ID}" -d "type=${TYPE}" -o ${ZIP_FILE}.zip
    24. if [ ! -s "${ZIP_FILE}.zip" ]; then
    25. echo "download error."
    26. exit 1
    27. fi
    28. size=`du -b ${ZIP_FILE}.zip | awk '{print $1}'`
    29. if [[ ${size} -lt 500 ]]; then
    30. echo "download file error."
    31. cat ${ZIP_FILE}.zip
    32. unlink ${ZIP_FILE}.zip
    33. exit 1
    34. fi
    35. # 解压 移动文件
    36. mkdir -p ${ZIP_FILE}
    37. unzip ${ZIP_FILE}.zip -d ${ZIP_FILE}
    38. /bin/cp ${ZIP_FILE}/fullchain.crt ${FILE_CERT}
    39. /bin/cp ${ZIP_FILE}/private.pem ${FILE_CERT_KEY}
    40. # 删除 打完收工
    41. unlink ${ZIP_FILE}.zip
    42. rm -rf ${ZIP_FILE}
    43. `${COMAND_RELOAD}`