新闻中心

浏览量:0
2021-03-14 00:16
华为云计算
大数据
RedHat
修改系统密码
Cisco
修复文件系统
修改密码
VMware
修改系统密码
Cisco
大数据
修复文件系统
华为云计算
修改密码
RedHat
VMware

热门关键词

这里有最新的公司动态,这里有最新的网站设计、移动端设计、网页相关内容与你分享

[Aliyun-ACP] 使用负载均衡实现https与http的混合访问

收藏

实验概述

    互联网巨头雅虎官方对外发布消息,承认在2014年的一次黑客袭击中,至少5亿用户的数据信息遭窃。此次事件让我们再次意识到网站安全的重要性,网站加密防护的必要性。我们可以使用HTTPS协议对网站进行全站加密,但是,大部分用户已经习惯直接输入域名(即使用 HTTP 协议)访问网站。因此,企业需要将用户的 HTTP 请求转化为 HTTPS 请求进行访问。这个问题在传统的 IT 架构中已经得到解决,但是在云上如何解决 HTTP 与 HTTPS 的混合访问?   

    本实验使用负载均衡配置监听,利用Nginx实现HTTP请求向HTTPS请求的转化,从而完成HTTP和HTTPS的混合访问。

HTTP请求转化为HTTPS请求架构图

img1

转化后输入IP自动跳转成HTTPS协议访问页面

img2

实验目标

   完成此实验后,可以掌握的能力有:

1)使用负载均衡配置HTTP和HTTPS监听,支持HTTP请求和HTTPS请求的混合访问;

2)使用Nginx将HTTP请求转化为HTTPS请求;

学前建议

了解负载均衡的基本操作功能特点。

1.1 背景知识

HTTPS 协议

    HTTPS 能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用 HTTPS 协议。

·       基本概念

HTTPS 是更安全的 HTTP 协议,它在 TCP(负责网络数据传输)和 HTTP层 之间,增加了一个 SSL 层。这一层通过数字证书和加密算法对 HTTP 请求进行加密。已经采用 HTTP 协议的网站要过渡到 HTTPS,将在技术改造服务器资源、流量资源上付出更多成本。

·       工作流程

     HTTPS 其实是有两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。

img3

 

负载均衡监听

负载均衡提供四层(TCP/UDP协议)和七层(HTTP/HTTPS协议)监听,您可根据应用场景选择监听协议:

·       负载均衡四层监听将请求直接转发到后端ECS实例,而且不修改标头。

·       负载均衡七层监听原理上是反向代理的一种实现,客户端HTTP请求到达负载均衡监听后,负载均衡服务器会通过与后端ECS建立TCP连接,即再次通过新TCP连接HTTP协议访问后端,而不是直接转发报文到后端ECS。

img4

 

2.2 使用HTTP请求查看网站服务器

    本小节主要内容:直接通过 ECS 实例的 IP 地址,访问并查看已部署的 Web 网站。

1. 通过如下步骤,查看 实验资源  Web服务器01 的网站信息:

1)点击左侧导航栏 实验资源 ,并拷贝 Web服务器01 的 外网地址

2)新建一个浏览器页面,并输入 Web服务器01 的 外网地址 ,浏览网站 LAB013 ROOM

img5

2. 参考如上步骤,在浏览器中,输入 Web服务器02  外网地址 ,并访问 Web服务器02 网站。

img6

3. 可以查看到两台服务器的内容完全一致。一般情况下,为了保证企业业务的持续性,企业会将生产环境部署到两台相同的服务器中。这样在高并发时,通过负载均衡可以将网站的流量分发到不同的服务器后端,从而提升用户体验。

 

 

2.3 负载均衡中添加HTTP和HTTPS监听

    本小节主要内容:在负载均衡(SLB)中添加 HTTPS 和 HTTP 协议监听

1. 首先,通过如下步骤,访问阿里云负载均衡(SLB)管理控制台:

1)点击页面左侧导航栏 实验资源 ,并点击 前往控制台 

2)在打开的阿里云 RAM用户登录 页面中,分别输入 实验资源 中提供的 子用户名称 、子用户密码 ,并点击 登录

注意:若登录信息错误,请查看 企业别名 是否与 实验资源 提供的 阿里云主账号企业别名 相同。

img7img8

3)在阿里云管理控制台,点击顶部导航栏处的 产品与服务 ,下拉列表中,依次选择 云计算基础服务 --->  弹性计算 ---> 负载均衡 ,进入负载均衡的管理控制台。

img9

2. 通过如下步骤,进入 实验资源 提供的 负载均衡 实例的管理页面:

1)在实例管理页面,顶部的地址栏中,选择 实验资源 提供的 地址 ,例如:华北2 。

2)在地址栏下面的搜索栏中,选择 负载均衡ID ,并输入 实验资源  负载均衡 的 实例ID ,点击 搜索

3)在搜索栏下,查看搜索结果,并点击实例右侧的 管理 ,进入 负载均衡 实例的管理页面。

img10

3. 通过如下步骤,添加 负载均衡 的 HTTPS 协议的监听。

1)在负载均衡实例页面,点击下侧栏的 监听

2)在实例监听页面,点击右侧 添加监听

img11

3)在 基本配置 页面,配置如下信息:

·       前端协议[端口]:选择 HTTPS ,并填写端口号为 443

img12

·       服务器证书 :选择已有服务器证书 lab-ca 。

说明:SLB 的服务器证书是本实验已提供的公共资源。SLB 的证书上传的具体操作步骤,请参考章节 上传证书

img13

·       其余配置信息保持默认,完成如上配置后,点击 下一步

img14

4)在负载均衡后端添加 ECS 实例-选择默认服务器组

img15

通过添加,把提供的两台ECS服务器放到SLB资源池。

 

img16

确认后,在服务器后端,填写80,然后点击下一步

img17

 

说明:本实验中不会对添加的 ECS 实例进行健康检查,但是,在真实的工作环境中,强烈建议用户开启健康检查。健康检查的操作和使用,请参考实验  SL010 使用SLB实现持续性高并发访问 

img18

5)等待 3-5 秒,提示 恭喜,监听配置成功 ,完成后,点击 确认 。

img19

6)返回监听配置页面,查看到新建 HTTPS:443 监听的 状态 运行中 。此时,HTTPS协议监听添加成功。

img20

4. 通过如下步骤,添加 负载均衡 的 HTTP 协议的监听。

1)再次点击页面下侧的 添加监听

img21

2)在 基本配置 页面,配置如下信息:

·       前端协议[端口]:选择 HTTP ,并填写端口号为 80

img22

后端服务器组,选择默认服务器组

·       后端协议[端口]:默认使用 HTTP ,填写端口号为 88 ;

·       其余配置信息保持默认,完成如上配置后,点击 下一步 

img23

说明:本实验中使用 88 端口进行判定和转发的,在真实的工作环境中,用户请根据实际情况设置端口信息。

3)在健康检查配置中,关闭 健康检查,完成后,点击 确认 

img24

4)等待 1-3 秒,提示监听配置成功 ,完成后,点击 确认 。

5)在监听配置中,可以查看到新建监听 HTTP:80

img25

2.4 分别查看两种请求的访问效果

    本小节主要内容:测试负载均衡的监听是否生效。

1. 验证 HTTP 协议监听:在浏览器中新建一个页面,输入 实验资源 提供的 负载均衡 的 IP地址 。此时,页面提示 502 错误。证明 HTTP 协议监听开启,但是无法正常访问网站。

说明:HTTP请求没有经过加密,需要在之后的步骤中进行配置,将它转化为HTTPS请求才能够访问。

img26

2. 通过如下步骤,验证 HTTPS 协议监听:

1)在浏览器中,新建页面,并输入 https://xxx.xxx.xxx.xxx (其中 xxx.xxx.xxx.xxx 为 实验资源 提供的 负载均衡 的 IP地址 )。

注意:必须输入 https:// ,否则会出现访问错误。

2)页面提示 您的连接不是私密连接 ,点击页面下端的 高级 

说明:由于本实验使用的是公共证书,因此会出现这样的提示。在真实的工作环境中,若上传到SLB的证书是有效的,则不会出现这样的提示。请参考章节:上传证书

img27

3)展开信息提示证书的相关信息,点击 继续前往xxx.xxx.xxx.xxx(不安全) 

img28

4)页面显示 LAB013 ROOM 网站,证明 HTTPS 监听配置成功,且用户可以通过 HTTPS 访问到后端服务器部署的网站。

img29

 

 

 

2.5 HTTP请求转化为HTTPS请求 

    本小节主要内容:通过重定向的方式将来自 HTTP 请求转发到 HTTPS,实现用户直接通过输入负载均衡 IP 地址就可以直接访问网站。

1. 通过本地远程连接服务,远程登录到 我的实验资源 中的  Web服务器01 ECS实例。

说明:远程连接的详细操作步骤,请参考 帮助文档 。登录时,请使用 实验资源 提供的 外网地址 ,用户 和 密码

img30

2. 通过如下步骤,修改 Nginx 配置文件:将所有 88 端口请求,都转发到负载均衡的 HTTPS 协议的 IP 访问地址:

1)输入如下命令,进入 Nginx 配置文件的编辑页面。

vim /etc/nginx/nginx.conf

2)键盘输入 i ,进入 编辑 模式

3)清空 85 行到 94 行的注释 # ,如下图所示:

img31

4)修改 rewrite 的参数信息,将 xxx.xxx.xxx.xxx 替换为 实验资源 提供的 负载均衡 IP地址

说明:在真实的工作环境中,若使用域名访问,请将此处的 https://xxx.xxx.xxx.xxx 替换为 https 协议访问的域名。例如:https://lab.aliyunedu.net。

img32

5)完成如上修改后,在键盘中点击 esc ,退出编辑模式。

6)输入以下命令 ,保存并退出 nginx.conf 的编辑页面。

:wq

img33

3. 执行如下命令,重启Nginx

service nginx restart

img34

4. 参考如上步骤,修改 Web服务器02 的信息。

1)登录到 实验资源 提供的 Web服务器02 。

2)修改 Nginx 配置文件。

vim /etc/nginx/nginx.conf

img35

3)重启 Nginx 服务器:

service nginx restart

img36

5. 完成如上配置后,通过如下步骤,验证通过负载均衡的 HTTP 访问网站,是否可以自动跳转到 HTTPS 访问:

1)在浏览器中,输入并访问 负载均衡 的 IP地址

2)可以看到,直接跳转到 https 协议访问页面,点击 继续访问

说明:建议使用另一个浏览器查看结果,因为会由于页面的缓存问题,将不会显示下图所示的页面。

img37

3)页面显示 LAB013 ROOM 网站。

img38

 

3.1 购买服务器证书

    本小节主要内容:在阿里云的 证书服务 ,购买一个服务器证书。

说明:本章不提供实操资源,仅供阅读与学习。

1. 通过如下步骤,购买一个阿里云的免费证书:

1)通过在阿里云管理台,进入 证书服务 的管理控制台。

img39

2)点击右上角的 购买证书

img40

3)在证书购买页面,证书类型 选择 免费DV SSL 。

img41

4)其余保持默认,完成后,点击 立即购买

img42

5)点击 去支付

img43

6)点击 确认支付 。

img44

7)提示 恭喜,支付成功 ,关闭购买页面。

2. 返回 证书服务 管理控制台,在我的订单中,查看到新购买的证书 状态 待完成

img45

3. 通过如下步骤,在本地服务器上生成证书的 .csr 文件和 .key 文件。

1)在本地Linux操作系统的服务器中,执行如下命令,生成 2048 位的加密私

openssl genrsa -out ca.key 2048

img46

2)执行如下命令,生成 证书签名请求(CSR)。

openssl req -new -key ca.key -out ca.csr

    请参考下图,输入参数信息。

注意:Common Name 为服务器绑定的域名。

img47

4. 通过如下步骤,补全阿里云上购买的证书信息:

1)返回阿里云 证书服务 的管理控制台,并点击新购证书右侧的 补全

img48

2)在 填写域名信息 页面,输入证书绑定的域名,例如:lab.aliyunedu.net。点击 下一步

img49

3)在 填写个人信息 页面,输入个人信息。完成后,点击 下一步 。

img50

4)在 传相关信息 页面,选择 自己生成CSR 。

img51

5)在本地服务器中,输入如下命令,查看 ca.csr 文件内容。

cat ca.csr

img52

6)粘贴 ca.csr 文件内容到 请输入上传的CSR文件 下方的文本框中。完成后,点击 保存 。

img53

7)点击页面右下角的 提交审核

img54

8)页面提示信息,点击 确认

img55

9)此时,证书的 状态变为 审核中

img56

5. 通过如下步骤,签发新购证书。

1)等待一段时间,邮箱收到一封证书相关的邮件。查看 主机记录  记录值 。

img57

2)进入域名解析页面,添加一条解析。

3)设置 记录类型  CNAME ,并输入拷贝的 主机记录 记录值

4)完成后,点击 保存

img58

5)返回 证书服务 管理控制台。等待一段时间,新购的证书 状态 将变为 已签发 ,此时证书可用。

img59

 

6. 点击证书右侧的 下载 ,根据本地部署的服务器,获取相应的 .pem 格式证书内容,并查看证书的使用方法。

img60

img61

3.2 上传证书

   本小节主要内容:个人或企业已有一个可用的证书的前提下,将证书上传到负载均衡服务中。

1. 通过如下步骤,进入 负载均衡 的 证书管理 页面。

1)在阿里云管理控制台,依次顶部导航栏处的 产品与服务 ,并依次选择 云计算基础服务 ---> 网络 ---> 负载均衡 ,进入负载均衡管理控制台。

 img62

2)点击左侧栏的 证书管理 ,进入证书管理页面。

img63

2. 通过如下步骤,将证书上传到负载均衡服务中。

1)点击右上角的 创建证书

img64

2)输入 证书名称 ,例如:test-ca。

3)勾选证书使用的地域,例如:华北2 等。

说明可勾选多个地域,例如:华北2 华东1 。 

4)证书类型 选择 服务器证书

img65

5)证书内容 输入证书的 .pem 格式文件内容。

img66

6) ,输入证书的 .key 文件内容。

img67

7)完成后,点击 确认 

img68

8)在证书管理页面,可以查看到证书的详细信息。

img69

 

3. 最后,在绑定证书的域名中,添加 负载均衡实例IP地址的解析,就可以实现 HTTPS 协议的加密访问。

1)例如下图所示的网站:

img70

2)例如:阿里云官网,输入 aliyun.com,自动跳转到 https 访问页面。

img71

3)例如:访问云中沙箱的域名:lab.aliyunedu.net ,自动跳转到 https 访问的域名下。

img72

 

3.3 知识扩展

负载均衡的证书管理功能

    针对 HTTPS 协议,提供统一的证书管理服务,证书无需上传到后端 ECS,解密处理在负载均衡上进行,降低后端 ECS CPU 开销。

·       证书格式要求

    申请的证书为 linux 环境下 pem 格式的证书。负载均衡不支持其他格式的证书。

> 如果是通过 root CA 机构颁发的证书, 您拿到的证书为唯一的一份,不需要额外的证书,配置的站点即可被浏览器等访问设备认为可信。

> 如果是通过中级 CA 机构颁发的证书,您拿到的证书文件包含多份证书,需要人为的将服务器证书与中间证书合并在一起上传。

拼接规则为:服务器证书放第一份,中间证书放第二份,中间不要有空行。

注意:一般情况下,机构在颁发证书的时候会有对应说明, 请注意规则说明。

1)root CA 机构颁发的证书规则:

a.  [——-BEGIN CERTIFICATE——-, ——-END CERTIFICATE——-] 开头和结尾;请将这些内容一并上传;

b. 每行 64 字符,最后一行长度可以不足 64 字符。

2)中级机构颁发的证书规则:

a. 

——-BEGIN CERTIFICATE——-

——-END CERTIFICATE——-

——-BEGIN CERTIFICATE——-

——-END CERTIFICATE——-

——-BEGIN CERTIFICATE——-

——-END CERTIFICATE——-

b.  证书之间不能有空行;

c. 每一份证书遵守第一点关于证书的格式说明;

3)RSA 私规则:

a.  [——-BEGIN RSA PRIVATE KEY——-, ——-END RSA PRIVATE KEY——-] 开头结尾;请将这些内容一并上传。

b. 每行64字符,最后一行长度可以不足64字符。

说明:如果您不是按照上述方案生成私,得到[——-BEGIN PRIVATE KEY——-, ——-END PRIVATE KEY——-] 这种样式的私,您可以按照如下方式转换:

首先,运行以下命令:

openssl rsa -in old_server_key.pem -out new_server_key.pem

然后,将 new_server_key.pem 的内容与证书一起上传。

·       转换证书格式

负载均衡只支持 PEM 格式的证书,其他格式的证书需要转换成 PEM 格式后,才能上传到负载均衡中。建议通过 openssl 工具进行转换。本文提供了使用 openssl 将以下几种比较流行的证书格式转换为 PEM 格式的方法。

1)DER 转换为 PEM

运行以下命令进行证书转化:

openssl x509 -inform der -in certificate.cer -out certificate.pem

运行以下命令进行私转化:

openssl rsa -inform DER -outform PEM -in privatekey.der -out privatekey.pem

2)P7B 转换为 PEM

运行以下命令进行证书转化:

openssl pkcs7 -print_certs -in incertificat.p7b -out outcertificate.cer

 

获取 outcertificat.cer 里面 [——-BEGIN CERTIFICATE——-, ——-END CERTIFICATE——-] 的内容作为证书上传。

3)PFX 转换为PEM

运行以下命令提取私

openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes

运行以下命令提取证书:

openssl pkcs12 -in certname.pfx -nokeys -out cert.pem

 

 

 

首页    阿里云    [Aliyun-ACP] 使用负载均衡实现https与http的混合访问