不说废话哈哈,域名大家都知道的,公司的对外根域名是买的阿里云,估计站点挂的免费的ssl用完了,老大不想花钱扩容,所以部门想个办法实现域名的免费证书。
acme.sh 是一个git的开源项目,可以帮你生成免费的证书,而且支持多个免费的签发机构,如果某一个机构不能使用了,那么可以自己去切换。项目地址:github.com/acmesh-offi… 这个程序默认的签发机构是zerossl,我尝试了几次有时候linux的ssh版本会导致创建证书这一步执行失败,建议切换成 Let’s Encrypt ,切换的方式 acme.sh --set-default-ca --server letsencrypt
使用的方式
首先我们需要切换成root用户,作者建议我们使用root的方式配置,作者也提供了sudo的方式配置,但是也不建议,比较麻烦。
- 需要下载acme.sh,下载的方式 curl get.acme.sh | sh -s email=个人邮箱,如果无法在服务器下载可以自己去git上面下载然后上传到服务器上。
- 为程序配置全局别名 alias acme.sh=~/.acme.sh/acme.sh
- 然后就可以我们的域名生成证书了,正常我们都是用代理中间件配置域名的对应转发,比如nginx、haproxy、apache,官方提供了nginx 和 apache 两种证书生成的模式
acme.sh --issue -d mydomain.com --apache
acme.sh --issue -d mydomain.com --nginx
- 将生成的证书配置到我们指定的位置
acme.sh --install-cert -d mydomain.com \
--key-file /etc/nginx/ssl/mydomain.com.key \
--fullchain-file /etc/nginx/ssl/mydomain.com.crt \
--reloadcmd "nginx -s reload"
这里就算是结束了 ,免费的证书已经按生成完成,后面大家可以自己在自己的服务中间件配置https,其实大家可以到acme的目录下面找到自己域名的子目录,这个就是整个过程的工程目录,里面有一个mydomain.com.conf ,域名开头的配置文件,acme的自动的更新证书的执行计划也是基于这个配置完成。大致是这么个配置
Le_Domain=
Le_Alt='no'
Le_Webroot='nginx:'
Le_PreHook=''
Le_PostHook=''
Le_RenewHook=''
Le_API=
Le_Keylength='ec-256'
Le_OrderFinalize=
Le_LinkOrder=
Le_LinkCert=
Le_CertCreateTime='1705023903'
Le_CertCreateTimeStr='2024-01-12T01:45:03Z'
Le_NextRenewTimeStr='2023-01-11T01:45:03Z'
Le_NextRenewTime='1710121503'
Le_RealCertPath=''
Le_RealCACertPath=''
Le_RealKeyPath=
Le_ReloadCmd=
Le_RealFullChainPath=
是不是特别的清晰,域名、更新时间、下一次的更新的时间、更新的位置(Le_RealCertPath)。