关于acme.sh的详细介绍,请参考这个博客 https://wsgzao.github.io/post/acme/
acme.sh 申请zerossl 证书(let's encrypt不再是默认):

  1. http申请 (默认会自动续期)
  2. DNS申请

常规方式

#安装acme.sh,同时会加一个crontab任务到crontab -l中, 会忙我们自动续期
curl https://get.acme.sh|sh
#注册zerossl账户,第一次运行acme的时候会有提示
#acme.sh --register-account -m test@zhufunin.com
acme.sh  --issue  -d www.zhufunin.com \
--webroot /usr/local/openresty/nginx/html/ \
--key-file /usr/local/openresty/nginx/conf/ssl/www.zhufunin.com.key \
--fullchain-file /usr/local/openresty/nginx/conf/ssl/www.zhufunin.com.crt \
--reloadcmd "/usr/local/openresty/nginx/sbin/nginx -s reload"

或者如下指定使用let's encrypt

acme.sh --set-default-ca  --server  letsencrypt --issue  -d www.zhufunin.com \
--webroot /usr/local/openresty/nginx/html/ \
--key-file /usr/local/openresty/nginx/conf/ssl/www.zhufunin.com.key \
--fullchain-file /usr/local/openresty/nginx/conf/ssl/www.zhufunin.com.crt \
--reloadcmd "/usr/local/openresty/nginx/sbin/nginx -s reload"

值得注意的是, 这里指定的所有参数都会被自动记录下来, 并在将来证书自动更新以后, 被再次自动调用.
例如我的参数会记录在/root/.acme.sh/www.zhufunin.com/www.zhufunin.com.conf中,
nginx配置成为反向代理,需要添加如下配置

        location ^~ /.well-known/acme-challenge/ {
            root /usr/local/openresty/nginx/html/;
        }

standalone方式申请证书

如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 acme.sh 还能假装自己是一个 webserver, 临时听在 80 端口, 完成验证:

#注意需求安装socat
yum install socat -y
#你的域名,例如www.zhufunin.com 需要指向你的服务器IP
acme.sh  --issue -d www.zhufunin.com   --standalone \
--key-file /usr/local/openresty/nginx/conf/ssl/www.zhufunin.com.key \
--fullchain-file /usr/local/openresty/nginx/conf/ssl/www.zhufunin.com.crt

2. DNS申请

curl https://get.acme.sh|sh

第一步: 使用--issue (指定使用letsencrypt)

acme.sh --set-default-ca  --server  letsencrypt --issue -d harbor.zhufunin.com --dns \
 --yes-I-know-dns-manual-mode-enough-go-ahead-please
#申请wildcard证书
./acme.sh --set-default-ca  --server  letsencrypt --issue -d zhufunin.com -d *.zhufunin.com --dns  --yes-I-know-dns-manual-mode-enough-go-ahead-please

相关文章: