acme.sh申请Let's encrypt泛域名证书Docker化部署
一:手动安装acme.sh
本次测试系统为:Ubuntu16.04
curl https://get.acme.sh | sh
# 也可以使用wget方式:wget -O - https://get.acme.sh | sh
source ~/.bashrc
然后可以执行下面的命令获取 acme.sh 更新,并设置之后都自动更新 acme.sh 脚本
acme.sh --upgrade --auto-upgrade
二:申请证书
使用acme.sh有三种申请方法
- 使用HTTP校验方式申请证书
- 使用DNS手动校验方式申请证书
- 使用DNSAPI校验方式申请证书
2.1 DNSAPI申请方式
github上的How to use DNS API
下面以godaddy域名为例申请泛域名证书,方式需要先获取godaddy账号的API信息,获取地址
申请完成后记录下Key与Secret,然后在命令行导入key与secret
export GD_Key="xxxxxxxxxxxxxxxxxxxxxxx"
export GD_Secret="xxxxxxxxxxxxxxxxxxxx"
# 上面的信息会保存在 .acme.sh/account.conf配置文件中
# 注意:GD_Key, GD_Secret根据域名商的不同而不一样,具体见github
导入完成后开始申请域名证书:
acme.sh --issue --dns dns_gd -d example.com -d '*.example.com' # dns_gd这个参数根据域名商不同会不一样
...............................................................
# 该命令执行完成后,会显示证书所在的路径
# 证书保存路径:~/.acme.sh
nginx的配置:
server {
listen 443;
server_name task.example.com;
root /wwwroot/task/front-web;
access_log logs/task.access.log main;
error_log logs/task.error.log error;
# 修改下面两行代码后面的证书路径即可
ssl_certificate /home/ubuntu/.acme.sh/example.com/fullchain.cer;
ssl_certificate_key /home/ubuntu/.acme.sh/example.com/example.com.key;
location / {
index index.html index.htm;
}
............................
}
server {
listen 80;
server_name task.inve.one;
if ($host = task.inve.one) {
return 301 https://$host$request_uri;
}
}
2.2 DNS手动校验方式
通配符证书,英文 Wildcard Certificate 国内黑话叫做野卡&#x