VPS新机安装分享:Let’s Encrypt的https正确安装方法

王志勇 发表于 2018年11月03日 09:03

SSL我前后经历了一个多月,始终没有安装成功。网上也搜不到一个更为系统、有效的成功教程,经过这几天的调试,终于成功了,并测试了多种环境,所以写下此文与君共勉。为什么我之前安装总是失败呢?因为Let’s Encrypt的安装脚本有个bug,恰好不支持我的主力环境CentOS+Apache。Let’s Encrypt的官方安装脚本,是一个全自动的脚本,在调试中目前支持这几个系统环境:

CentOS+Apache ×
CentOS+Nginx √
Ubuntu+Apache √
Ubuntu+Nginx √

如果你的系统正好是和我一样使用CentOS+Apache,也可以安装,但是安装完成后,用https访问页面,会出现自签名证书页面,提示“此连接不受信任”。这个bug尚未解决,但将来一定能找到解决方法。
其余3种环境,安装完成后,可以顺利访问https。
Debian系统,因为有太多与Ubuntu的环境、配置相似,一般情况下Ubuntu支持的,Debian也一样支持。

导致安装Let’s Encrypt失败,有很多原因。所以需要有一个成功的案例,能够帮助排除这些失败的因素。本文的调试步骤,请读者使用Ubuntu 14、或CentOS 6系统来调试。

重要的准备工作:首先必须给Apache、或Nginx建立站点;必须让域名正确解析到该服务器,并生效,调试时可以用一个二级域名测试。这2个条件,缺一不可,否则会安装失败。
先用http://访问站点,能正常访问之后,才能开始安装Let’s Encrypt。

完成上述这2个条件之前,还有一个重要条件,服务器必须先确保安装Apache、或Nginx。Apache/Nginx的快速安装方法请见这里

Apache、Nginx建立站点比较简单,本博客未写步骤,以后再添加,链接会添加在本文的这个位置。(CentOS/Ubuntu+Apache/Nginx+PHP的环境配置,大约需要写5-10篇,消耗20小时以上的写作时间,我会逐步撰写。)

开始安装Let’s Encrypt,shell命令:

wget https://dl.eff.org/certbot-auto --no-check-certificate && chmod a+x certbot-auto && ./certbot-auto

之后就没有然后了,全自动完成安装、配置。这个官方脚本会自动识别服务器的类型,自动安装很多软件,并自动修改Apache、Nginx的配置文件,完全不需手动配置。只要是符合文章开头的后3种环境、和2个条件,都能100%成功。这个脚本将来也可能会受时效的影响,无法安装成功,目前是测试能成功的。

安装过程中,有很多英文提示,这里就不一一截图了。有提示A(gree),输入a;有提示Y(es),都输入y。
其中,到了输入email之后,会提示A(gree)、Y(es)。之后就是最后2步了,会有一个已经建立的站点的域名列表,输入数字,如下图,我输入1:

如果这个域名尚未解析成功、或未解析到当前服务器上,会有如下错误提示:

如果域名解析成功,已经到最后一步了,是否将http 301跳转至https,我选择1,不跳转,如下图:

最后,重启Apache、或Nginx,https顺利安装成功,如下图:

虽然本文写完了,本博客还是暂时不使用https,原因是:前文1前文2。有一定的性能损失,测试了很多次,同一个页面,http比https访问快不少、快很多。

https对于开发者来说,是一种困扰:2018年7月,谷歌浏览器贸然把所有的http已经标为“不安全”。

对于公开的论坛、博客、新闻页面,如果没有特定需要,一般可以不使用https,我更加拥护http。如果是建英文网站,做国外项目,那就没有办法,可能不得不用https。因为2014年之前,国外99.5%以上的知名站点都使用http,如今国外80%以上的知名站点都使用https。

https只是提高了安全级别,http并非不安全。密码通过JavaScript在发送前加密、或MD5加密、类似MD5加密,方法如我写的前文,都能使http达到https一样的安全效果。

https,一些商业项目需要充门面的时候,能助你一臂之力。但实际的页面访问速度、抗高并发,还是http更好用,因为https是对整个网页的所有内容进行hash加密、还原,而且用于加密、还原的证书文件那么长,必然要消耗资源。

同一IP能否使用多域名的https?
早期一些的SSL,一个IP只能使用一个域名的https。经过测试,同一IP,Let’s Encrypt可以多个域名。

附1:安装失败或者误操作怎么办?
运行命令:
./certbot-auto

附2:免费续期
Let’s Encrypt的免费SSL有效期3个月,每隔2个月输入以下命令:
./certbot-auto renew --force-renew

输入命令后显示如下截图:

如果提示:
./certbot-auto: No such file or directory
是因为在/root目录下,certbot-auto文件被删除。执行这个命令重新下载:
wget https://dl.eff.org/certbot-auto --no-check-certificate && chmod a+x certbot-auto

然后再手动续期:
./certbot-auto renew --force-renew

自动续期需要用到crontab命令的定时任务,因为时间的关系未测试,大家可以搜索crontab命令的用法。如果调试中不生效,可能是由于关闭了SSH窗口的原因,需要建立一个screen。
这个定时任务,每次重启VPS后都需要再次添加。也可以在/etc/rc.local文件建立自启任务,添加这个crontab命令。/etc/rc.local有很多时候也不生效,可以先写入sleep 180;会好一点,但仍然有失效的可能,所以这个重要的任务,最好还是每次重启VPS后手动添加crontab命令。

3条评论:
1   自由勇 2018-11-04 11:18
Trackback来自《VPS的快速安装和PHP调试导航页

虽然这些文章正在增多,但实际上,VPS的安装、配置比我们想象中容易得多,新机通常在半小时内能完成整个安装、配置。

2   自由勇 2018-11-06 06:24
更新:虽然本文写完了,本博客还是暂时不使用https,原因是:前文1、前文2。有一定的性能损失,测试了很多次,同一个页面,http比https访问快不少、快很多。

https对于开发者来说,是一种困扰:2018年7月,谷歌浏览器贸然把所有的http已经标为“不安全”。

对于公开的论坛、博客、新闻页面,如果没有特定需要,一般可以不使用https,我更加拥护http。如果是建英文网站,做国外项目,那就没有办法,可能不得不用https。因为2014年之前,国外99.5%以上的知名站点都使用http,如今国外80%以上的知名站点都使用https。

https只是提高了安全级别,http并非不安全。密码通过JavaScript在发送前加密、或MD5加密、类似MD5加密,方法如我写的前文,都能使http达到https一样的安全效果。

https,一些商业项目需要充门面的时候,能助你一臂之力。但实际的页面访问速度、抗高并发,还是http更好用,因为https是对整个网页的所有内容进行hash加密、还原,而且用于加密、还原的证书文件那么长,必然要消耗资源。

3   自由勇 2018-11-06 06:42
Trackback来自《VPS的快速安装和PHP调试导航页

虽然这些文章正在增多,但实际上,VPS的安装、配置比我们想象中容易得多,新机通常在半小时内能完成整个安装、配置。

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

直接发送Trackback到此文章

说明:本评论系统不支持HTML代码。(您的留言需要审核,审核规则请见这里。)

王志勇:1980-09-26 (38周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2018年11月
2018年10月(30)
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2018 auiou.com All rights reserved.
此Blog程序由王志勇编写 已经发布在Arsue