基于 acme.sh从Let’s Encrypt生成免费的泛域名证书
安装acme.sh
# 安装依赖环境
yum -y install curl cron socat
# 下载并安装acme.sh
curl https://get.acme.sh | sh
source ~/.bashrc
申请域名解析服务商API token ,完成DNS验证
DNS验证的意义在于证明域名的所有人是你,而不是别人。acme.sh不是随随便便就就能操作当前域名的DNS解析记录的,必须通过当前域名的域名注册服务商授权才可以。这就需要用到了API token
服务商名称 服务商简称 所需API参数 获取API参数地址 cloudxns cx export CX_Key=”123456” export CX_Secret=”abcdef” 点击访问 dnspod (cn大陆版) dp export DP_Id=”123456” export DP_Key=”abcdef” 点击访问 aliyun ali export Ali_Key=”123456” export Ali_Secret=”abcdef” 点击访问 cloudflare cf export CF_Key=”123456” export CF_Email=”abc@example.com“ 点击访问 linode linode export LINODE_API_KEY=”123456” 点击访问 he he export HE_Username=”username” export HE_Password=”password” he的用户名密码 digitalocean dgon export DO_API_KEY=”123456” 点击访问 namesilo namesilo export Namesilo_Key=”123456” 点击访问 aws aws export AWS_ACCESS_KEY_ID=123456 export AWS_SECRET_ACCESS_KEY=abcdef 点击访问 namecom namecom export Namecom_Username=”username” export Namecom_Token=”123456” 点击访问 freedns freedns export FREEDNS_User=”username” export FREEDNS_Password=”password” freedns的用户名密码 godaddy gd export GD_Key=”123456” export GD_Secret=”abcdef” 点击访问 yandex yandex export PDD_Token=”abcdef” 点击访问
我使用的是阿里云,对应的命令为:
export Ali_Key="xxxxxx"
export Ali_Secret="xxxxxxxxxxxxxxxxxxxxxxxxxx"
生成泛域名证书
多域名,可以使用 -d 参数添加
--keylength ec-256
是签发 ECC 类型的证书,它的安全性更高,删除则使用默认的 RSA 证书
acme.sh --issue --dns dns_ali -d iamghf.top --keylength ec-256 --standalone
复制证书
证书已经签发了,不过默认是保存在 ~/.acme.sh/
里
acme.sh --ecc --installcert -d iamghf.top
--key-file /etc/nginx/cert/iamghf.top.key
--fullchain-file /etc/nginx/cert/iamghf.top.cer
--reloadcmd "/usr/sbin/nginx -s reload"
指定域名,指定证书保存目录,我这里设置在 /etc/nginx/cert/
,指定 Nginx 重载命令,如果签发的不是 ECC 证书,把 --ecc
参数去掉
这样使用 acme.sh 就完成了证书的签发,如果证书快要过期了,脚本会自动更新证书
脚本自动更新,可以使用以下命令
acme.sh --upgrade --auto-upgrade
未解决的问题
启用https后 发现chrome浏览网站时并不是全绿
查了下是因为页面还有其他 http 资源,也就是所谓的 Mixed Content,开启调试模式看了下是用的图床没启用https,懒得折腾了有空再修复吧。