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系统来调试。

重要的准备工作
这2个条件,缺一不可,否则会安装失败。

1. 首先必须给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%成功。这个脚本将来也可能会受时效的影响,无法安装成功,目前是测试能成功的。

(2018-11-24 11:23更新:请注意,Ubuntu 12默认无法用这种wget的方式安装,解决的办法是先用火狐浏览器,访问https://dl.eff.org/certbot-auto,会自动下载certbot-auto文件。然后,用SFTP连接VPS,把certbot-auto文件上传到/root目录下,然后执行命令chmod a+x certbot-auto && ./certbot-auto
或者干脆把上述的命令里的https去掉,改成这样在Ubuntu 12下就能顺利安装:
wget http://dl.eff.org/certbot-auto; chmod a+x certbot-auto; ./certbot-auto;
2018-11-24 11:23更新完。)

安装过程中,有很多英文提示,这里就不一一截图了。有提示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命令。

6条评论:
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的安装、配置比我们想象中容易得多,新机通常在半小时内能完成整个安装、配置。

4   自由勇 2018-11-24 11:25
2018-11-24 11:23更新:请注意,Ubuntu 12默认无法用这种wget的方式安装,解决的办法是先用火狐浏览器,访问https://dl.eff.org/certbot-auto,会自动下载certbot-auto文件。然后,用SFTP连接VPS,把certbot-auto文件上传到/root目录下,然后执行命令chmod a+x certbot-auto && ./certbot-auto
或者干脆把上述的命令里的https去掉,改成这样在Ubuntu 12下就能顺利安装:
wget http://dl.eff.org/certbot-auto; chmod a+x certbot-auto; ./certbot-auto;
5   angel2018 2019-04-02 11:20
在vps ubuntu14.04 apache下用过,方法靠谱。

补充一点操作记录。
在Invalid email daaress: xxxxx(Enter 'c' to cancel )
下填自己的email 以Enter回车确认。

which names would you like to activate HTTPS for?
下填选自己的网站配置数字,多个,加逗号,以Enter回车确认。

6   自由勇 2019-06-06 09:09
Ubuntu 12占用内存比Ubuntu 14少得多。

但是非常遗憾,今天安装Let’s Encrypt时发现,Let’s Encrypt已经禁止了在Ubuntu 12下安装,安装时会报错:/opt/eff.org/certbot/venv/bin/python: No module named pip.__main__; 'pip' is a package and cannot be directly executed

现在Ubuntu能安装Let’s Encrypt的最低版本只有Ubuntu 14了。

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

正文:

  记住信息?

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

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

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

Blog存档 Archives

2021年06月(9)
2021年05月(17)
2021年04月(25)
2021年03月(6)
2021年02月(17)
2021年01月(30)
2020年12月(19)
2020年11月(18)
2020年10月(15)
2020年09月(14)
2020年08月(14)
2020年07月(14)
2020年06月(16)
2020年05月(13)
2020年04月(18)
2020年03月(14)
2020年02月(15)
2020年01月(16)
2019年12月(11)
2019年11月(26)
2019年10月(25)
2019年09月(30)
2019年08月(10)
2019年07月(29)
2019年06月(30)
2019年05月(26)
2019年04月(30)
2019年03月(30)
2019年02月(30)
2019年01月(30)
2018年12月(30)
2018年11月(30)
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-2021 auiou.com All rights reserved.
此Blog程序由王志勇编写