Category: Nginx

2 Posts

acme.sh证书同步到华为云
项目代码 https://github.com/ilaipi/acme.sh-dockerhttps://github.com/ilaipi/huawei-cloud 环境 华为云 ubuntu 18.04Docker version 19.03.8, build afacb8b7f0docker-compose version 1.25.4, build 8d51620image: neilpang/acme.sh v2.8.6image: jenkins/jenkins:lts Jenkins ver. 2.204.5 目标 acme.sh自动更新证书使用华为云的负载均衡 https监听证书更新后自动同步到华为云 实现方案 server上通过docker部署acme.sh使用nodejs调用华为云api实现更新证书使用jenkins实现证书更新后自动调用nodejs 部署acme.sh实现自动更新证书 acme.sh可以通过aliyun_dns_api完成证书颁发,需要阿里云的app_key和app_secret。 参考链接 你可以直接安装acme.sh就能实现。但是当你有多个域名并且分布在多个阿里云帐号的时候,直接安装acme.sh可能解决不了问题(尝试过,但是没配置成功),而用docker跑acme.sh可以完美解决这个问题。所以这里用docker来跑acme.sh。 参考 ilaipi/acme.sh-docker 完成部署 自动更新证书到华为云 到 GitHub Repo 看源码部署 Jenkins自动同步到华为云 acme.sh有notify机制,notify到个人邮箱,jenkins配置一个任务,通过邮件触发(需要安装一个邮件触发的插件Poll Mailbox Trigger Plugin),检查到邮件就执行服务器上的自动更新代码。 (目前还在实验阶段) 在acme的容器内配置邮件发送服务,使用acme支持的mailgun,注册帐号并完成邮件认证。邮件认证的时候可能需要google voice号码(我认证的时候没有看到中国的选项)。最后调用acme.sh --set-notify --notify-hook mailgun来确认是否配置成功,配置成功的话会发邮件到接收邮箱。 在jenkins中配置的是outlook邮箱(host: imap-mail.outlook.com)。 Jenkins Advanced Email Properties subjectContains=Renew *.xxxxxxx.com successreceivedXMinutesAgo=600 # 意思是10小时内发送的邮件。一般acme是凌晨0点后执行任务 Jenkins Schedule TZ=Asia/ShanghaiH H(3-7)/3 * * *# 这样的意思应该是早上3-7点之间执行3次
acme (Let’s Encrypt! 免费、自动完成证书安装)
安装nginx 参考链接:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/#prebuilt_ubuntu 安装acme 参考链接:https://github.com/Neilpang/acme.sh 阿里云域名发布证书 # 这个要从注册域名的阿里云帐号获取 # 如果是子帐号,添加AliyunDNSFullAccess权限即可 export Ali_Key="" export Ali_Secret="" # 申请并下载证书 acme.sh --issue --dns dns_ali -d '*.domain.com' # 安装到nginx目录 acme.sh --installcert -d '*.domain.com' --key-file /etc/nginx/ssl/*.domain.com.key  --fullchain-file /etc/nginx/ssl/*.domain.com.fullchain.cer  --reloadcmd "sudo nginx -s reload" # 其中最后的 --reloadcmd,可能根据具体环境改变。比如在root用户下,不需要sudo。官方建议是 service nginx force-reload,如果不能成功就改成nginx -s reload