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

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

(2022-03-30 07:37更新:本文的安装命令,从2021年9月底之后,已经失效,也就是本文的方法现在已经失效,现在本文只能用来查阅历史了。Let’s Encrypt的网站https://dl.eff.org,现在也不提供安装的命令。不知道是不是Let’s Encrypt正在逐步停止免费供应SSL?)

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 (44周岁)
程序设计,前端设计。

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

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

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写