使用acme.sh为网站部署RSA与ECC通配符证书
由于网站的证书即将过期,需要更新,记录一下证书的更新过程。
1、安装acms.sh
acme.sh官网地址http://acme.sh,会跳转至项目的Github地址,按照文档进行安装
1 | curl https://get.acme.sh | sh -s email=koalarong@outlook.com |
或者通过git下载安装
1 | git clone https://github.com/acmesh-official/acme.sh.git |
安装成功后退出终端,重新登录,即可运行acme.sh
1 | acme.sh --version |
其他高级安装选项请参考Acme.sh官方文档 How-to-install
2、使用DNS API方式签署证书
可参考https://github.com/acmesh-official/acme.sh/wiki/dnsapi,了解不同DNS提供商的API使用方法,由于我的域名目前在阿里云备案并配置解析,使用阿里云的api进行配置https://github.com/acmesh-official/acme.sh/wiki/dnsapi#11-use-aliyun-domain-api-to-automatically-issue-cert
访问阿里云RAM 访问控制,安全起见使用子用户AccessKey,选择创建用户,为acme.sh单独创建用户,访问方式选择Open API调用访问,
创建成功后会显示AccessKeyID和AccessKeySecret,保存好这两段字符,可下载CSV文件保存到本地,并注意安全防止泄露
设置变量来让acme.sh使用,信息会被保存在~/.acme.sh/account.conf文件中
1 | export Ali_Key="AccessKeyID" |
设置完成后开始签署RSA证书,采用2048位的RSA密钥,证书包含二级根域名以及三级通配符域名,2048位密钥已可以满足绝大部分情况下的使用需求,
1 | acme.sh --issue --dns dns_ali -d koalarong.com -d "*.koalarong.com" -k 2048 |
等待脚本完成证书签署后会提示各文件保存位置
1 | [Thu 27 Jan 2022 02:26:49 PM CST] Your cert is in: /home/koalarong/.acme.sh/koalarong.com/koalarong.com.cer #证书文件 |
之后签署ECC证书,采用256位的ECC密钥,安全性相当于3072位的RSA密钥
1 | acme.sh --issue --dns dns_ali -d koalarong.com -d "*.koalarong.com" -k ec-256 |
签署完成后同样会提示各文件保存位置
1 | [Thu 27 Jan 2022 02:43:52 PM CST] Your cert is in: /home/koalarong/.acme.sh/koalarong.com_ecc/koalarong.com.cer |
至此证书文件全部签署完成
3、安装证书至Nginx
根据官方文档,进行证书的安装,会自动将证书文件安装到指定目录,并每60天更新一次,其中 –reloadcmd 较为重要,执行定时任务时会运行此命令,重新启动Web服务器,达到更新证书的目的,下面是在我的服务器上使用Docker运行Nginx的安装命令
1 | acme.sh --install-cert -d koalarong.com -d "*.koalarong.com" \ |
ECC证书同理
1 | acme.sh --install-cert -d koalarong.com -d "*.koalarong.com" --ecc \ |
如果为第一次安装,需要修改Nginx配置,配置如下
1 | server { |
重新登录网站可以看到证书已完成更新
使用现代浏览器访问,公钥为256位ECC
由于找不到上古版本的浏览器,暂时无法演示RSA证书
参考链接:
使用acme.sh为网站部署RSA与ECC通配符证书