陈奇网络工作室

通过acme.sh脚本更新Letsencrypt的CA证书 实现站点https永久免费升级

本文的内容

显示

1.

http和https的区别

2.

安装acme.sh

3.

生成证书

4.

副本/安装证书

5.

更新证书

6.

更新acme.sh

7.

如果出了问题怎么办:

7.1.

推荐阅读

现在很多站长会考虑将自己的站点从http升级到https,不仅仅是出于安全考虑,还有第三方平台的限制,比如Google浏览器将http站点标记为不安全站点,微信平台要求访问的微信小程序必须使用https。那么如何将http站点升级为https站点呢?

http和https的区别

为了数据传输的安全性,https在http的基础上增加了ssl协议。ssl协议依靠证书来验证服务器的身份,并对浏览器和服务器之间的通信进行加密。如果要将http升级到https,只需要在http站点添加一个CA证书即可。

目前,有两种获取CA证书的方式:

购买收费的CA证书,如《168元UCloud优刻得单域名DV SSL证书申请与部署流程》;

获得免费证书,如《网站启用https:UCloud优刻得免费SSL证书申请与部署流程》。

收费的CA证书由各大服务商出售,如阿里云、腾讯云等。

收费证明不便宜。从阿里云的官网来看,其价格可以从几千元到上万元不等。

这对于小公司平台甚至个人网站来说都是一笔不小的开支。

Letsencrypt是一个免费、自动、开放的证书发行机构。其颁发的证书每次有效期为三个月,但只要能持续更新,基本可以永久使用。问题是如何实现自动持续更新?

今天推荐的脚本acme.sh实现了acme协议,可以帮助你从Letsencrypt持续自动更新CA证书。

下载地址如下:

https://github.com/Neilpang/acme.sh

安装acme.sh

安装acme.sh很简单,只需一个命令:

卷曲?https://get.acme.sh?|?嘘

普通用户和root用户都可以安装使用。安装过程如下:

1.在您的主目录中安装acme.sh:

~/.acme.sh/

并为您的方便创建bash的别名:alias acme . sh=~/. acme . sh/acme . sh。

2.自动为你创建一个cronjob,每天零点自动检测所有证书。如果即将过期,需要更新,证书会自动更新。安装过程不会污染现有系统的任何功能和文件,所有修改仅限于安装目录:~/.acme.sh/

生成证书

Acme.sh实现了Acme协议支持的所有认证协议,一般有两种认证方式:http和dns认证。

1.http模式需要在你的网站根目录下放置一个文件来验证你的域名所有权,完成验证,然后生成证书。

acme.sh?-问题?-迪?mydomain.com?-迪?www.mydomain.com?- webroot?/home/wwwroot/mydomain.com/

Acme.sh会自动生成一个验证文件放在网站的根目录下,然后自动完成验证。最后会智能删除验证文件,整个过程没有副作用。

如果使用apache服务器,acme.sh可以智能地自动完成来自apache配置的验证,不需要指定网站根目录:

acme.sh?-问题?-迪?mydomain.com?-阿帕奇人

如果使用nginx服务器,或者逆向生成,acme.sh可以智能自动完成来自nginx配置的验证,不需要指定网站根目录:

acme.sh?-问题?-迪?mydomain.com?- nginx

注意:无论是在apache还是nginx模式下,acme.sh都会在验证后恢复到之前的状态,不会私自更改自己的配置。好处是不用担心配置被打破,但也有一个坏处。ssl配置需要自己配置,否则只能成功生成证书,网站还是无法访问https。但为了安全起见,你最好自己手动更改配置。

如果您没有运行任何web服务,并且端口80是空闲的,那么acme.sh可以假装成web服务器,暂时监听端口80以完成验证:

acme.sh?-问题?-迪?mydomain.com?-独立

2、dns模式,在域名上添加一条txt解析记录,以验证域名的所有权。

这种方式的好处是不需要任何服务器,不需要公共ip,只需要dns分析记录就可以完成验证。但缺点是如果不同时配置自动DNS API,acme.sh将无法通过这种方式自动更新证书,每次都需要手动重新解析和验证域名所有权。

acme.sh?-问题?-域名系统?-迪?mydomain.com

然后,acme.sh将生成相应的解析记录并显示出来。你只需要在你的域名管理面板中添加这个txt记录。

解析完成后,重新生成证书:

acme.sh?-续约?-迪?mydomain.com

注意:这里第二次使用了- renew。

dns真正的强大之处在于,你可以使用域名解析器提供的api自动添加txt记录来完成验证。

Acme.sh目前支持Cloudflare、DNSpod、CloudXNS、Godaddy、ovh等数十种解析器的自动集成。

副本/安装证书

前面的证书生成后,需要将证书复制到真正需要的地方。

注意:默认生成的证书放在安装目录:~/.acme.sh/。请不要直接使用这个目录中的文件。比如不要直接让nginx/apache配置文件使用以下文件。此文件中的文件供内部使用,目录结构可能会改变。

正确的使用方法是使用- install cert命令并指定目标位置,然后证书文件将被复制到相应的位置,例如:

acme.sh?-安装证书?-迪?com?-关键文件?/etc/nginx/ssl/。钥匙?-全链文件?/etc/nginx/ssl/fullchain.cer?- reloadcmd?服务?nginx?'强制重新加载'

稍微提醒一下,这里用的是service nginx force-reload,不是service nginx reload。根据测试,reload不会重新加载证书,所以使用了force-reload。

Nginx的配置ssl_certificate使用/etc/nginx/ssl/fullchain.cer,而不是/etc/nginx/ssl/。否则SSL实验室的测试将报告链问题不完整的错误。

- install cert命令可以采用许多参数来指定目标文件。并且可以指定reloadcmd。证书更新时,会自动调用reloadcmd使服务器生效。

值得注意的是,这里指定的所有参数都将被自动记录,并在将来证书自动更新后自动再次调用。

更新证书

目前证书会在60天后自动更新,不需要你做任何事情。这个时间以后可能会缩短,但都是自动的,不用在意。

更新acme.sh

目前acme协议和Letsencrypt CA都是频繁更新的,所以acme.sh也是频繁更新以保持同步。

将acme.sh升级至最新版本:

acme.sh?-升级

如果您不想手动升级,可以打开自动升级:

acme.sh?-升级?-自动升级

之后,acme.sh会自动保持更新。

您也可以随时关闭自动更新:

acme.sh?-升级?-自动升级?0

如果出了问题怎么办:

如果有错误,请添加调试日志:

acme.sh?-问题?….-调试

或者:

acme.sh?-问题?….-调试?2

最后,本文不是完整的说明,还有很多高级功能。更多高级用法,请参考其他维基页面。

https://github.com/Neilpang/acme.sh/wiki

西部数码代理(chenqinet.cn)是工信部、ICANN、CNNIC认证的全球顶级域名注册服务机构,中国五星级域名注册商!超过2000万个域名通过西部数码代理注册和管理,超过100万个网站托管在西部数码代理云服务器虚拟主机。西部数码代理支持数十个顶级域名的注册和管理,支持批量查询、批量注册、批量分析、智能分析、批量迁移等便捷易用的功能,使用体验非常好。

目前西部数码代理域名注册在售,最低只要1元!

更多详情,请见http://zhuji.chenqinet.cn/services/domain/.

西部数码代理域名抢占预订,支持各类高价值老域名抢占,支持“网站历史、百度收录、百度权重、历史外链、百度评价、搜狗反链接”等综合搜索功能,共计26项!可以快速准确的定位到你想要定位的各类精品域名!同时,西部数码代理域名抢注整合了全球多家抢注厂商(将陆续增加近200家抢注厂商),梳理出13个抢注渠道,从根本上提高抢注成功率!

其中第一关成功率高达99%。每天西部数码代理预发布功能也会发布一些优质的过期域名,可以直接注册拍卖。

预定你最喜欢的域名:http://zhuji.chenqinet.cn/services/grab/index.asp.

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3