本文将结合「免费SSL证书: Let’s-Encrypt证书申请 + HTTPS加密教程【LAMP/Apache配置】」(原文链接:https://www.seoimo.com/lamp-ssl/)以及个人操作经验来介绍如何快速申请ssl证书,以及https加密。
HTTPS的必要性
1、HTTP存在的几点不足:
通信使用明文,内容可能会被窃听;不验证通信方的身份,因此有可能遭遇伪装;无法证明报文的完整性,有可能已遭篡改。
2、《网络安全法》的相关规定。
3、越来越多场景的强制性要求。
IOS、谷歌等要求的 APP 分发下载必须使用 https 安全连接;
微信小程序、支付宝小程序强制使用 HTTPS;
银行支付相关业务必须是HTTPS。
谷歌浏览器70版本显示醒目的(红色)HTTP页面不安全警告。
等保测评的相关要求,“应采用校验码/密码加密的技术保证通信过程中数据的完整性”。
英美强制要求所有政府网站 2016 年实现全站 HTTPS 加密;
新一代 HTTP/2 协议的支持需以 HTTPS 为基础;
4、利于网站搜索引擎优化。
搜索引擎如谷歌,百度站在确保用户信息安全的角度,都在大力倡导网站部署SSL证书实现https加密访问。在搜索、展现、排序方面也给予部署了SSL证书网站优待。
所以,如果你打算长期的、正规的建站/写博客的话,我的建议是:请尽量安装SSL证书,以开启HTTPS访问。
再次提醒:建议在进行以下操作前做好快照备份,以防不测。同时,由于安装 SSL证书 需要验证域名,故务必确保域名解析成功。
本文将从小白比较熟悉的宝塔面板来一步步操作:
#1 更新适合自己的运行环境到最新版本
在宝塔面板中更新运行环境十分简单,只需要点点更新就好!
#2 申请与安装免费的SSL证书(Symantec)
Symantec SSL证书:
Symantec是现如今全球首屈一指的互联网安全品牌。在端点安全、电子邮件安全、数据泄露防护和SSL证书领域,没有任何一个品牌可以替代Symantec的地位。
我的域名与cdn都在阿里云,所以我选择在阿里云相关界面申请免费SLL证书。
直接点击购买就可以申请
购买后点击证书申请,填写个人信息,选择验证方式即可
点击部署根据需要部署到相关项目上
选择你的服务器类型下载相关证书
在进入宝塔面板点击 网站——设置——SSl 把刚刚下载的文件用记事本打开,复制到上面,点击保存,在 证书夹页面 点击部署就OK了。
#3 防火墙开启443端口
宝塔默认开启443,这步请直接跳过。
因为HTTPS访问要走443端口,所以,需要在防火墙里将其开启:
# vi /etc/sysconfig/iptables
复制 22 或 80 端口规则样式添加 443 端口规则:-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 443 -j ACCEPT
按 :wq 保存后退出,重启防火墙:
# service iptables restart
这时,使用 https 网址访问博客,正常情况下,网址前面会出现小锁的标记,并且 https 已变为绿色。
#4 HTTPS替换掉HTTP链接
细心的你可能发现了:网址前面的小锁为啥不是期待中的绿色呢?
这是因为,页面上存在该域名下的非 https 链接。也就是说,文章内有些图片、CSS和JS等文件仍然是以 http 链接样式存在的。
因此,我们要将其全部改成 https 样式。
进入 phpMyAdmin 管理后台,选择目标数据库,在 SQL 里跑一下如下语句(别忘了把 seoimo.com 换成你自己的域名):
UPDATE wp_options SET option_value = replace( option_value, 'http://www.seoimo.com', 'https://www.seoimo.com' );
UPDATE wp_posts SET post_content = replace( post_content, 'http://www.seoimo.com/wp-content', 'https://www.seoimo.com/wp-content' );
如果安装了静态缓存(如 WP-Super-Cache )和 Memcached 插件(比如 MemcacheD Is Your Friend ),建议再清空下缓存。清空 Memcached 缓存
连接 Memcached :
# telnet 127.0.0.1 11211
清空所有缓存数据:
flush_all
显示 OK 之后,输入 quit 退出即可。Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
flush_all
OK
quit
Connection closed by foreign host.
注意:如提示 -bash:telnet:command not found ,需要安装下 telnet 命令:
# yum -y install telnet
最后,建议再重启下 Memcached 扩展:
# /etc/init.d/memcached restart
接下来,刷新网页,期待中的小绿锁终于出现了。
至此,HTTPS才算是真正启用了。
#5 禁用 TLS 1.0 和 TLS 1.1、配置 HSTS
① 禁用 TLS 1.0 和 TLS 1.1
倘若提示 “This server supports TLS 1.0 and TLS 1.1. Grade will be capped to B from January 2020.”,则可选禁用 TLS 1.0 和 TLS 1.1 即可:# vi /usr/local/apache/conf/extra/httpd-ssl.conf
找到 SSLProtocol all -SSLv2 -SSLv3 该行,行末添加 -TLSv1 -TLSv1.1,即 SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 ,然后,重启一下lnnp:# lnmp restart
② 配置 HSTS (HTTP Strict Transport Security)(可选)
上文提到的配置 HSTS 部分,考虑到虚拟主机可能没有修改 .conf 的权限,可选择将 Header always set .. 该行添加到网站根目录下的 .htaccess 文件内:# Enable HSTS (Strict-Transport-Security)
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
#6 关闭 SNI(Server Name Indication)(可选)
Server Name Indication(服务器名称指示)是用来改善 SSL(Secure Socket Layer)和 TLS(Transport Layer Security)的一项特性,它允许客户端在服务器端向其发送证书之前请求服务器的域名。
在以前,只有独立 IP 的虚拟主机或 VPS 才能开启 SSL/TLS 连接服务。也就是说,一个 IP 只能对应一个 HTTPS 访问。因此,同一个 IP 下搭建多个 HTTPS 网站是不行的。
但现在可以了。
使用 LNMP 最新版安装包编译的 Apache 2.2 已自带 SNI 拓展,默认是打开的。同 IP 下搭建多个网站时,只要按操作绑定域名并启用 HTTPS 就可以,不需要额外设置。
然而,在启用之后,你可能遇到下面这种情况:没有权限,访问禁止!
这是因为,某些奇葩的浏览器不支持 SNI 技术,比如上图所示的 IE 8 以及在 WinXP 系统下所有的 IE 浏览器。
尽管 XP 系统已经退出历史舞台了,但在国内还是有一定的市场。
倘若你选择无视之,下面这步可以略过了;但如果你不打算失去这部分访客,还是得照顾一下他们。
方法比较简单:关闭 SSLStrictSNIVHostCheck
:
# vi /usr/local/apache/conf/extra/httpd-ssl.conf
将默认的 SSLStrictSNIVHostCheck on
改成 off
,如下所示:
SSLStrictSNIVHostCheck off
保存,退出。然后重启 Apache
即可:
# lnmp httpd restart
再次访问就不会出现上图中的问题了。
但是,如果你是同一个 IP 下搭建了多个网站,即便关闭了 SSLStrictSNIVHostCheck
,XP 系统下访问HTTPS可能还会出问题。比如:
出现这种情况有两个解决办法:①换用除 IE 以外的浏览器,比如谷歌Chrome和360极速浏览器;②换个系统吧兄弟,XP 真的太古老了。
#7 定时更新SSL证书
因为免费证书只用一年使用期限,记得到期前重复证书申请安装相关步骤!!
#8 HTTP全部301重定向到HTTPS
编辑网站根目录下的 .htaccess 文件,在顶部添加如下代码:
# BEGIN Rewrite
RewriteEngine On
RewriteCond %{HTTP_HOST} ^seoimo.com [NC]
RewriteRule ^(.*)$ https://www.seoimo.com/$1 [R=301,L]
# END Rewrite
保存之后,上传覆盖即可。
倘若访问提示“重定向次数过多”,也可设置仅跳转端口试试:
# BEGIN Rewrite
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.seoimo.com/$1 [R=301,L]
# END Rewrite
#9 HTTPS对网站打开速度的影响
网站启用HTTPS访问后,SSL耗时只有几十毫秒。页面打开耗时虽有所增加,但增加的非常有限,甚至可以忽略不计。
网站打开速度更多是由VPS性能(比如 CPU 、带宽和 I/O读写)、线路、域名DNS解析、站内优化以及本地网速等多种原因造成的,有些因素可以通过优化调整改善,有些我们却很难左右。
建议在做好站内优化的同时,尽可能选择性能更好的VPS/服务器/虚拟主机。
—————
此文章给予本人建站莫大帮助,再次感谢作者!!
如需要联系原作者,点击下方文章链接评论回复,
本文文章转载自 https://www.seoimo.com ,
www.seoimo.com 版权所有,
原文章出处链接:https://www.seoimo.com/lamp-ssl/
评论已关闭