什么是https?



超文本传输安全协议(​​Hypertext Transfer Protocol Secure​​,缩写为​​HTTPS​​)是一种网络安全传输协议

​http​​是​​HTTP​​协议运行在​​TCP​​之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份

​https​​是​​HTTP​​运行在​​SSL/TLS​​之上,​​SSL/TLS​​运行在​​TCP​​之上,所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。​​HTTPS​​通过​​TLS​​层和证书机制提供了内容加密、身份认证和数据完整性三大功能,可以有效防止数据被查看或篡改,以及防止中间人冒充,相比http而言更安全,越来越多的网站选择了全站 ​​HTTPS​

如何搭建https?



通过腾讯云申请免费的​​SSL证书​​,为期一年,注意:域名这里我们填的是二级域名,因为腾讯云仅支持单个非顶级域名的证书申请,如果我们有多个子域需要申请多次

​DNS​​验证可以选择自动和手动,如果自动失败的话可以再手动验证,手动验证操作如下,自动验证通过可无视,查看证书详情,看到如下信息:

这里以解析为例,其他解析服务基本一样,​​主机记录​​​就是上图​​标记①​​​中内容,​​记录类型​​​选择​​CNAME​​​,​​记录值​​​选择上图​​标记②​​的内容,点击保存,然后等差不多一分钟左右证书就申请下来了:

配置的话请参,需要上传到服务器

配置htaccess



此时我们访问我们的网站可以发现加​​https​​和不加​​https​​都可以访问到,那么如何强制把网站重定向到​​https​​页面中去了,也就是接下来要说到的​​htaccess​​文件了,可以用来重定向页面

我们在服务器根目录下新建一个​​.htaccess​​文件,然后往其中添加以下几行就会自动定向到​​https​​中去

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


当然如果你需要你每个子域都重定向到​​https​​页面中去,那么可以在每个子域的根目录下添加上面的​​.htaccess​​文件,暂时我选用的就是这个笨办法

此时你可以发现直接重定向到​​https​​页面了,但是由于之前引用的微博图床的图片因为是​​http​​协议,所以控制台会报错,提示​​Mixed Content​​错误信息。如果图片是直接输出到页面中的话,因为微博图床也支持​​https​​引用,所以我们可以修改​​http​​协议为​​https​​,此时控制台就不会再报错了。如果图片信息是从数据库里获取的话,我们可以在​​mysql​​执行以下命令批量修改

update table set imgSrc=REPLACE(imgSrc,'http:','https:')


但是我建议的是不直接使用​​https​​,而是采用无协议头的用法,也即引用大多数​​CDN​​所使用的方法

好了,到此全站​​https​​的启用就完成了,你会发现访问我的网站时浏览器地址栏都加了一把小锁了