目前获取CA证书的方式有两种:
各大服务商均有销售付费CA证书,比如阿里云,腾讯云等。
付费证书的价格并不便宜,据阿里云官网介绍,其价格从几千元到几万元不等。
对于小型公司平台甚至个人网站来说,这是一笔相当大的开支。
它是一个免费、自动化、开放的证书颁发机构,其颁发的证书每次有效期为三个月,但只要不断更新,基本上可以永久使用。
今天推荐的脚本acme.sh实现了acme协议,可以帮助你自动、持续的更新CA证书。
下载地址如下:
安装 acme.sh
安装acme.sh很简单,只需一个命令:
curl https://get.acme.sh | sh
普通用户和root用户都可以安装使用,安装过程如下:
1.将 acme.sh 安装到您的主目录:
~/.acme.sh/
并创建一个 bash 别名以方便使用:alias acme.sh=~/.acme.sh/acme.sh
2.自动为您创建,每天0点自动检查所有证书,如即将过期需要续订,则自动续订证书,安装过程不会污染任何现有的系统功能和文件,所有修改都只限于安装目录:~/.acme.sh/
生成证书
acme.sh实现了acme协议支持的所有认证协议,一般有两种认证方式:http认证和dns认证。
1、http方式需要在你网站的根目录下放置一个文件来验证你的域名所有权,验证完成后即可生成证书。
acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/
acme.sh会自动生成验证文件,并放到网站根目录下,然后自动完成验证,最后会智能删除验证文件,整个过程没有任何副作用。
如果你使用的是服务器,acme.sh 也可以从配置中自动智能完成验证,不需要指定网站根目录:
acme.sh --issue -d mydomain.com --apache
如果你使用的是nginx服务器,或者反向代理,acme.sh还可以智能的从nginx配置中自动完成验证,不需要指定网站根目录:
acme.sh --issue -d mydomain.com --nginx
注意:不管是 nginx 模式还是 acme.sh,完成验证后都会回到之前的状态,不会擅自更改你的配置。这样做的好处是你不用担心配置被破坏,但是也有坏处,你需要自己配置 SSL 配置,否则你只能成功生成证书,但是你的网站还是无法访问 https。不过为了安全起见,还是应该手动更改配置。
如果你还没有运行任何 Web 服务,端口 80 是空闲的,那么 acme.sh 可以假装成一个 Web 服务并暂时监听端口 80 来完成验证:
acme.sh --issue -d mydomain.com --standalone
2、DNS方式:给域名添加txt解析记录,来验证域名的归属。
此方法的优点是不需要任何服务器或公网 IP 地址,只需要 DNS 解析记录即可完成验证。但缺点是,如果您不同时配置 DNS API,acme.sh 将无法使用此方法自动续订证书,每次都需要您手动重新解析并验证域名所有权。
acme.sh --issue --dns -d mydomain.com
然后acme.sh会生成对应的解析记录并显示出来,你只需要在你的域名管理面板中添加这条txt记录就可以了。
等待解析完成后,重新生成证书:
acme.sh --renew -d mydomain.com
注意:这里第二次是--renew
DNS 方法的真正强大之处在于,您可以使用域名解析提供商提供的 API 自动添加 TXT 记录来完成验证。
acme.sh目前支持、、、、、ovh等几十种解析器的自动集成。
复制/安装证书
证书生成之后,需要把它复制到真正需要的地方。
注意:默认生成的证书放在安装目录:~/.acme.sh/,请不要直接使用该目录下的文件。例如,不要在 nginx/ 配置文件中直接使用下面的文件。这里的文件是内部使用的,目录结构可能会发生变化。
正确的使用方法是使用--命令并指定目标位置,然后证书文件就会被复制到相应的位置,例如:
acme.sh --installcert -d .com \
--key-file /etc/nginx/ssl/.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "service nginx force-reload"
小提醒一下,这里用的是nginx force-,而不是nginx,根据测试,不会重新加载证书,所以用force-。
Nginx 配置使用 /etc/nginx/ssl/.cer,而不是 /etc/nginx/ssl/.cer,否则 SSL Labs 测试会报 Chain 错误。
--该命令可以携带多个参数,用于指定目标文件。并且可以指定在更新证书时自动调用该命令使服务器生效。
值得注意的是,这里指定的所有参数都会被自动记录,并且在将来证书自动更新后自动再次调用。
续订证书
目前,证书将在 60 天后自动续订,您无需执行任何操作。将来这个时间可能会缩短,但它将是自动的,您无需担心。
更新 acme.sh
目前由于acme协议和CA经常更新,acme.sh也经常更新以保持同步。
将acme.sh升级到最新版本:
acme.sh --upgrade
如果你不想手动更新,可以启用自动更新:
acme.sh --upgrade --auto-upgrade
此后,acme.sh 将保持自动更新。
您也可以随时关闭自动更新:
acme.sh --upgrade --auto-upgrade 0
如果出现问题该怎么办:
如果发生错误,添加调试日志:
acme.sh --issue ..... --debug
或者:
acme.sh --issue ..... --debug 2
最后,本文并不是完整的使用指南。还有许多高级功能。有关更高级的用法,请参阅其他 wiki 页面。
强调
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。