华为云服务器使用acme.sh生成证书及遇到的问题

发布时间 2023-11-16 17:41:39作者: 柳随风丶丶

 

参考资料:https://blog.csdn.net/Dancen/article/details/121044863
https://blog.csdn.net/weixin_52270081/article/details/126777550

如果要管理你的证书,到https://app.zerossl.com/ 用邮箱注册,假设为nidezerosslyouxiang@qq.com

安装:curl https://get.acme.sh | sh -s email=nidezerosslyouxiang@qq.com 或 wget -O - https://get.acme.sh | sh -s email=nidezerosslyouxiang@qq.com

如果提示:ERROR: cannot verify get.acme.sh's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=E1’:Issued certificate has expired.
则:wget --no-check-certificate -O - https://get.acme.sh | sh -s email=nidezerosslyouxiang@qq.com

安装完以后如果找不到,目录:cd ~/.acme.sh

在使用命令生成证书之前,你需要设置环境变量或临时环境变量,例:

export HUAWEICLOUD_Username=xxxx
export HUAWEICLOUD_Password=123456
export HUAWEICLOUD_DomainName=domainname

上面几个参数在华为云控制台点右上角用户名--》我的凭证 

以下几个我是用子账号测试的:

HUAWEICLOUD_Username对应我的凭证里面的IAM用户名
HUAWEICLOUD_Password对应设置的登陆密码
HUAWEICLOUD_DomainName对应我的凭证里面的帐号名

担心安全问题的话就到统一身份认证里面开个子账号,然后到子账号我的凭证里面找对应信息

配置完以后执行:

acme.sh --issue --dns dns_huaweicloud -d xxx.你的域名.com -d 

这里可能遇到错误,我遇到的有:

环境变量没设置好:Not enough information provided to dns_huaweicloud
用户名密码和domain设置错误:dns_api(dns_huaweicloud): Error getting token.
子账号云解析服务没有进行授权(用主账号给子账号开云解析服务接口相关调用权限):dns_api(dns_huaweicloud): Error getting zone id.

如果有其他问题可以去/root/.acme.sh目录查看acme.sh.log 里面可以看到调用华为云的参数和提示,可以自己用postman模拟

也可以到dnsapi目录去修改命令和参数,比如服务器默认的华东区修改为其他区

生成证书以后:

配置自动拷贝和重启,这个步骤会被acme记住,下次证书更新会执行
acme.sh --install-cert -d xxxx.com \
--key-file /usr/local/nginx/cert/xxxx.com.key \
--fullchain-file /usr/local/nginx/cert/xxxx.com.cer \
--reloadcmd "/usr/local/nginx/sbin/nginx -s stop && /usr/local/nginx/sbin/nginx"