华为云服务器使用acme.sh生成证书及遇到的问题
参考资料: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"