王志勇 发表于 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命令。
虽然这些文章正在增多,但实际上,VPS的安装、配置比我们想象中容易得多,新机通常在半小时内能完成整个安装、配置。
https对于开发者来说,是一种困扰:2018年7月,谷歌浏览器贸然把所有的http已经标为“不安全”。
对于公开的论坛、博客、新闻页面,如果没有特定需要,一般可以不使用https,我更加拥护http。如果是建英文网站,做国外项目,那就没有办法,可能不得不用https。因为2014年之前,国外99.5%以上的知名站点都使用http,如今国外80%以上的知名站点都使用https。
https只是提高了安全级别,http并非不安全。密码通过JavaScript在发送前加密、或MD5加密、类似MD5加密,方法如我写的前文,都能使http达到https一样的安全效果。
https,一些商业项目需要充门面的时候,能助你一臂之力。但实际的页面访问速度、抗高并发,还是http更好用,因为https是对整个网页的所有内容进行hash加密、还原,而且用于加密、还原的证书文件那么长,必然要消耗资源。
虽然这些文章正在增多,但实际上,VPS的安装、配置比我们想象中容易得多,新机通常在半小时内能完成整个安装、配置。
置顶的文章:
论朋友圈可以发什么?
短信验证开发的方案分享
巡回更新:2018-09-21
速度是永恒的主题
UTF-8、HTTPS原来都是浮云
https安全吗?
独立博客有必要安装https吗?
近期的主题:
夜晚靓歌(10):你没看过的《星雨心愿》
Feedval、Blogval将下线/谈理财和生存
2024.9感言
人生讨论(20):有人借钱怎么办?(2)
人生讨论(19):迄今为止最强的情感频道
数码评测(67):让小米/红米手机的反应提高1~2倍
数码评测(66):无线网卡FW150UH VS FW150UH
数码评测(65):如何快速自制CPU天梯图?
数码评测(64):2024年,你还在用VGA线吗?
人生讨论(18):6年就可以实现财务自由
人生讨论(17):为什么总是受欺负?
人生讨论(16):要钱的最新妙招
创业杂谈(17):什么项目能赢利?
人生讨论(15):有人借钱怎么办?
数码评测(63):高清切换超级神器
数码评测(62):再谈视频的尺寸
数码评测(61):近期数码采购和折腾
人生讨论(14):看穿尊重
数码评测(60):图拉丁-最佳中配工作“免费”手机
创业杂谈(16):博客何时终结?
版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。
与此相关的链接
自由勇专栏
Blog存档 Archives
2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +