做实验前需要
购买阿里云服务
,差不多充值10元就可以了,注册并充值后进行实验操作。





实验概述

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

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

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





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

实验目标

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

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 进行加密,所以传输的数据都是加密后的数据。

负载均衡监听

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 后端协议[端口]:默认使用 HTTP ,填写端口号为 88 ;
  • 其余配置信息保持默认,完成如上配置后,点击 下一步 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.5 HTTP请求转化为HTTPS请求

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

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

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


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

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

vim /etc/nginx/nginx.conf

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

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


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

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


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

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

:wq


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

service nginx restart


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

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

2)修改 Nginx 配置文件。

vim /etc/nginx/nginx.conf


3)重启 Nginx 服务器:

service nginx restart


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

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

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

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


3)页面显示 LAB013 ROOM 网站。


3.1 购买服务器证书

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

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

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

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

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

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

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

5)点击 去支付

6)点击 确认支付

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

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

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

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

openssl genrsa -out ca.key 2048

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

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

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

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

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

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

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

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

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

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

cat ca.csr

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

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

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

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

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

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

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

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

4)完成后,点击 保存

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

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

3.2 上传证书

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

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

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

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

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

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

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

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

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

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

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

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

7)完成后,点击 确认 

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

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

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

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

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

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


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!



0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注