李晓伟网站http升级https与Https网站加载http成功之路

前言:

1、我从阿里云移步华为云(在阿里云的数据尽毁,仅仅留下自己的本地NAS文件);
2、我的网站是由本人用华为云服务器+Windows Server 2016 标准版+PHP7.4+MySQL8.0(复选Workbench数据库管理软件)+phpMyAdmin(可选)+Wordpress 5.6组合搭建的环境;
3、网站环境的搭建与网站的安装测试本文不做赘述。

本文主题是描述我的网站http访问一切正常后的https访问的成功之路


一、https解释相关

1、https是技术与安全的升级,也是指定标准机构的利益收割机!
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性(相对性)。HTTPS 在HTTP 的基础下加入S(安全)就是加入了SSL,HTTPS 的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS存在不同于HTTP的默认TCP端口80及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。
2、HTTPS与HTTP原理区别
HTTPS 主要由两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据,增加 TCP-443 端口,对外服务。
3、HTTPS优缺点
优点
使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
HTTPS协议是由SSL+HTTP构建的可进行加密传输、身份认证的网络协议,要比 HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性。
HTTPS 是现行架构下相对安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
缺点
相同网络环境下,HTTPS 协议会使页面的加载时间延长近50%,增加10%到 20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗。就拿本站举例通过http://leewe.cn与Https://leewe.cn访问,IO时间是有一定不同的,明显http会快一些。
HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用。
最关键的是,SSL证书的信用链体系并不安全。特别是在“某些国家”可以控制 CA根证书的情况下,中间人攻击一样可行。
成本增加。部署 HTTPS 后,因为 HTTPS协议的工作要增加额外的计算资源消耗,例如SSL协议加密算法和SSL交互次数将占用一定的计算资源和服务器成本。在大规模用户访问应用的场景下,服务器需要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本 。

二、为网站增加https的IO能力

那么,我说了这么多,http还要不要升级https呢?
回答:是肯定的。

毕竟谁都不愿意在自己的网站展现的时候被贴上不安全的标签,那到底安不安全谁知道呢?反正我是韭菜。说时迟那时快,开始升级啦!

A、服务器端的角色与功能支持安装;

通过远程管理,在我的服务器端启动服务器管理器,在仪表盘右侧点击“添加角色与功能”添加“Active Directory 证书服务”和为Web服务器(IIS)添加ASP支持。其中Active Directory 证书服务复选→证书颁发机构、证书颁发机构Web注册、联机响应程序)三个子角色服务→CA选“独立”→配置类型选择根CA→私钥选择新建私钥→加密选择默认→名称自定义→时间5年→数据库位置自定义→在Web服务器的应用程序开发下复选ASP后执行安装,安装成功后会有提示安装成功。(备注:在这之后不可以更改服务器本地计算机名称)

B、申请SSL证书、下载证书、安装证书、应用证书

我在阿里云申请的DigiCert SSL通用DV证书,并将DV证书与域名绑定,然后下载并传输到服务器端,解压缩。

IIS服务器控制台中导入您解压的IIS证书文件
  1. 在安装IIS服务器的Windows系统中,单击开始 > 运行 > MMC打开控制台。
  2. 单击文件 > 添加/删除管理单元打开添加/删除管理单元对话框。
  3. 可用的管理单元列表中选择证书,单击添加选择计算机账户。然后单击下一步完成本地计算机(运行此控制台的计算机)的选择。
  4. 在控制台左侧导航栏单击控制台根节点下的证书打开证书树形列表。
  5. 个人右键菜单中选择所有任务 > 导入,打开证书导入向导对话框,并单击下一步
  6. 要导入的文件页面单击浏览导入下载的PFX格式证书文件,并单击下一步
  7. 说明 在导入证书文件时,文件名右侧文件类型列表中请选择所有文件类型。
  8. 输入证书密钥文件里的密码,并单击下一步。 您可在下载的IIS证书文件中打开pfx-password .txt文件查看证书密码。
  9. 选择根据证书类型,自动选择证书存储并单击下一步完成证书的导入。
  10. 打开IIS 8.0 管理器面板,定位到待安装证书的站点,单击绑定
  11. 网站绑定对话框中单击添加 > 选择https类型 > 端口选择443 > 导入的IIS证书名称 > 确定

至此我的网站可以实现经认证的https访问啦!等等,出现了以下问题——在多端浏览器测试时发现,资源访问出错,网页显示不全,有的浏览器安全锁出现感叹号。这里需要说明一下苹果的Safari浏览器访问没有问题做到了https访问,当含有http内容的正常加载,而火狐浏览器和微软的Edge浏览器则出现找不到资源,图片无法显示的问题,请看视频:

Apple Safari浏览器加载我的网站做到了更新加载
Firefox浏览器加载我的网站出现资源空载情况
Microsoft Edge浏览器加载我的网站出现资源空载情况
之上出现的问题就是https加载http资源出现终止加载

解决方案:
我测试了几个方案都以失败告终,这是是我使用的方案,必杀技。
就是在Html的头部<head> </head>之间加入 <meta http-equiv=”Content-Security-Policy” content=“upgrade-insecure-requests”>此段代码。意思就是将所有通过https发生的请求涉及到http资源的自动升级为https。而不影响资源本身和目录树结构,

我的代码实践如下:
<head>
<meta http-equiv=”Content-Security-Policy” content=“upgrade-insecure-requests”>
</head>

最后请看成功访问视频:

我的网站https访问加载问题解决了
左侧为Microsoft Edge浏览器、右侧Firefox浏览器

分享

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注