惊人的!甚至使用脚本将系统升级到https,而且永久免费限制,比如谷歌浏览器会将http站点标记为不安全站点,需要访问微信平台的微信小程序必须使用https等。那么如何升级一个http站点到https站点?http和https的区别为了数据传输的安全,https在http的基础上增加了ssl协议。ssl协议依靠证书来验证服务器的身份并对浏览器和服务器之间的通信进行加密。将http升级为https,只需要在http站点添加CA证书即可。目前CA证书的获取方式有两种:购买付费CA证书和免费获取CA证书。收费的CA证书在阿里云、腾讯云等各大服务商都有销售。收费证书并不便宜。据阿里云官网介绍,它们的价格从几千元到几万元不等。这对于一个小公司平台,甚至个人站点来说,都是一笔不小的开支。Letsencrypt是一个免费、自动化和开放的证书颁发机构。它颁发的证书一次有效期为三个月,但只要能不断更新,基本可以永久使用。今天推荐的脚本acme.sh实现了acme协议,可以帮助你持续自动更新来自Letsencrypt的CA证书。下载地址如下:https://github.com/Neilpang/acme.sh安装acme.sh安装acme.sh非常简单,只需要一个命令:curlget.acme.sh|sh普通用户和root用户都可以安装使用。安装过程有以下步骤:1.在您的主目录中安装acme.sh:~/.acme.sh/并为您的方便创建一个bash别名:aliasacme.sh=~/.acme。sh/acme.sh2,自动为你创建一个cronjob,每天0:00自动检测所有证书。如果即将过期需要更新,证书会自动更新。安装过程不会污染现有系统的任何功能和文件。所有修改仅限于安装目录:~/.acme.sh/generatecertificateacme.shacme协议支持的所有认证协议均已实现。一般有两种认证方式:http和dns认证。1、在http方式中,需要在你的网站根目录下放置一个文件来验证你的域名所有权,完成验证,然后生成证书。acme.sh--issue-dmydomain.com-dwww.mydomain.com--webroot/home/wwwroot/mydomain.com/acme.sh会自动生成验证文件,放在网站根目录下,然后自动完成验证。最终验证文件会被智能删除,整个过程没有任何副作用。如果你使用的是apache服务器,acme.sh也可以从apache配置中自动智能完成校验,不需要指定网站根目录:acme.sh--issue-dmydomain.com--apache如果你使用的是nginx服务器,或者逆向生成,acme.sh也可以从nginx配置自动智能完成校验,不需要指定网站根目录:acme.sh--issue-dmydomain.com--nginx注意:是否是Apache还是nginx模式。acme.sh验证完成后,会恢复到之前的状态,不会擅自更改自己的配置。优点是不用担心配置被破坏,但也有缺点,需要自己配置ssl配置,否则只能成功生成证书,而你的网站还是无法访问https.但为了安全起见,您应该自己手动更改配置。如果你还没有运行任何web服务,80端口空闲,那么acme.sh可以伪装成一个webserver,暂时监听80端口,完成验证:acme.sh--issue-dmydomain.com--standalone2,dns方式,在域名中添加一条txt解析记录,验证域名的归属。这种方式的好处是不需要任何服务器和公网ip,只需要dns的解析记录就可以完成验证。但缺点是如果不同时配置AutomaticDNSAPI,acme.sh将无法通过这种方式自动续订证书,需要每隔一段时间手动重新解析验证域名所有权时间。acme.sh--issue--dns-dmydomain.com然后acme.sh会生成相应的解析记录并显示出来,你只需要在你的域名管理面板中添加这条txt记录即可。解析完成后重新生成证书:acme.sh--renew-dmydomain.com注意:这里第二次是--renewdns方法真正厉害的地方在于可以使用域名解析提供的apiprovider自动添加txt记录完成验证。acme.sh目前支持自动集成cloudflare、dnspod、cloudxns、godaddy、ovh等数十种解析器。copy/installcertificate前面的证书生成后,下一步就是将证书复制到真正需要的地方。注意:默认生成的证书放在安装目录:~/.acme.sh/,请不要直接使用该目录下的文件。例如,nginx/apache配置文件不要直接使用以下文件。这里的文件供内部使用,目录结构可能会改变。正确的使用方法是使用--installcert命令并指定目标位置,证书文件就会被复制到相应的位置,例如:acme.sh--installcert-d
