4.4.1 使用系统生成CSR 方式,系统将自动帮您生成证书私钥,并且在证书申请成功后可直接在证书管理列表中下载您的证书和私钥。
4.4.2 也可以自己生成 CSR(Certificate Signing Request)证书请求文件,并上传CSR,在证书申请成功后可直接在证书管理列表中下载您的证书。
4.4.3 如果是手工验证需要手动添加一条DNS TXT类型的解析记录进行验证。
4.5 SLB负载均衡配置监听和调度策略
4.5.1 添加默认服务器组
在默认服务器组页面,点击添加,然后选择ECS两台实例添加到组里。
4.5.2 配置监听HTTPS 443端口
在监听页面,点击添加监听
选择负载均衡协议为HTTPS,监听端口为443,调度算法为WRR加权论询
4.5.3 配置监听HTTP 80端口,重定向到HTTPS 443端口
添加监听配置,监听协议为HTTP,监听端口为80,开启监听转发,目的为上一个步骤配置的HTTPS 443端口。
4.5.4 负载均衡调度检查
重定向检查:由http重定向到了
https,状态码为301.
因为浏览器有缓存的原因可能会测试不到效果,可采用在CentOS上使用命令测试
while true ; do curl -l https://mvp.yekangming.com ; sleep 1 ; done
4.6 添加CDN为网站加速
4.6.1 在CDN的管理控制台中添加需要加速的域名,选择业务类型为小文件(按照业务场景),源站信息为IP(SLB IP),选择端口为443端口,加速区域为中国大陆。
提交加速域名的配置
等待CDN配置,CNAME的字段将会显示mvp.yekangming.com.w.kunlungr.com
根据CDN控制台提供的CNAME进行配置,删除之前测试的主机为MVP的A记录,新建CNAME类型主机记录为mvp,记录值为mvp.yekangming.com.w.kunlungr.com。
测试CNAME配置是否生效
添加CDN链路为HTTPS,并选择云盾证书(之前申请的mvp.yekangming.com)
管理台已经见到该域名配置的CDN加速已经生效,并且启用了HTTPS。
为了演示只配置了静态资源加速,OSS未有配置,实际生产环境可配置(按照业务要求)。
4.7 添加应用防火墙WAF保障业务应用安全
4.7.1 新增添加网站
填写要保障安全的域名:mvp.yekangming.com ,协议类型选择HTTPS,服务器地址填写SLB的IP地址,端口选择443 HTTPS,因为WAF前有CDN加速服务,所以选择是,负载均衡算法选择IP HASH(按业务实际情况选择,一般会选择哈希用来持久化用户会话),因为无统计场景,无需填写流量标记Header。
关于服务器地址:如果源站在阿里云,一般填写的为ECS的公网IP地址;当ECS前面有SLB时,则填写SLB的公网IP地址;
4.7.2 添加DNS解析记录将访问执行到WAF应用防火墙服务
成功创建网站配置后,Web应用防火墙为该域名生成一个专用的CNAME地址
4.7.3 将CDN配置中的源站修改为应用防火墙WAF分配的CNAME地址
DNS解析异常的原因是没有配置CNAME导致的,因为CDN和WAF联合部署不需要去配置WAF的CNAME记录在DNS中,在CDN的回源中已经配置WAF的地址。
因为用户流量经过CDN后会回源给WAF,WAF清洗流量后会响应给SLB负载均衡服务。
4.8 ECS及RDS数据配置连接
4.8.1 开启外网IP(按照业务情况选择,大部分情况是在VPC网络中)
4.8.5 连接RDS MVP库中创建数据表
mysql> create table account(user varchar(15),password varchar(16));
插入模拟数据
mysql> insert into mvp.account values ('ykm','123456');
mysql> insert into mvp.account values ('carry','123456');
4.8.6 创建登录页
index.html
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>SQL注入测试页面</title>
</head>
<body style="background-color: #000000">
<h2 align="center" style="color: white">System Login</h2>
<form align="center" action="login.php" method="post" enctype="multipart/form-data">
<p style="width: 100%;height: 30px;display: block;line-height: 200px;text-align: center;color:white;font-size:16px;">账 号:<input type="text" name="user" value="" max="10"></p>
<p style="width: 100%;height: 30px;display: block;line-height: 200px;text-align: center;color:white;font-size:16px;">密 码:<input type="password" name="pass" value="" min="6" max="16"></p>
<p style="width: 100%;height: 30px;display: block;line-height: 200px;text-align: center;"><input type="submit" name="submit" value="登录"></p>
</form>
</body>
</html>
login.php
<?php
$con=mysqli_connect("rm-wz9430u4t5im323309o.mysql.rds.aliyuncs.com","ykm","MVP-ykm-demo01","mvp");
if(!$con) {
die("error:".mysqli_connect_error());
}
$user=$_POST['user'];
$pass=$_POST['pass'];
$sql="select * from account where user='$user' and password='$pass'";
$res=mysqli_query($con,$sql);
$row=mysqli_fetch_array($res,MYSQLI_NUM);
if(!is_null($row))
{
echo "Login successfully!<br> Welcome: $user";
}
else
{
echo "Error, Account password mismatch.";
}
?>
4.6.7 模拟登录测试,正常返回登录成功的信息。
模拟SQL注入的情况
账号填入:admin' and 1=1 --hack
即是将条件修改为正,--hack注释掉后面的代码。
4.6.8 消息队列和弹性伸缩。
消息队列应用场景:
异步处理:比如在商城用户注册的场景。用户注册后需要发送邮件和短信的通知,可用过串或者并行的方式在注册后将通知发送给用户。
应用解耦:比如在商城下单后,下单的消息写入(生产)到消息队列中,对应的库存系统会获取(消费)该消息进行库存的扣减。
流量削锋:比如在商城的秒杀系统中,用户的请求将写入队列,由队列的消费端根据队列消息的顺序做处理,如果消费端已经确定秒杀系统已定于没有库存则直接丢弃全部消息并通知用户。
消息通讯:比如在商城促销活动通知中,用户对促销活动主题进行订阅。
弹性伸缩应用场景:
热点业务:比如某个促销活动访
问量加大,需要按需自动化弹性伸缩、智能调度。
5. 个人建议
除了访问层(例如SLB、WAF)必须暴露在公网之外,如非业务特殊的需要时,各个服务间采用私网的方式进行连接,在高可安全要求下,可采用WAF应用防火墙、DDOS高防服务来保障业务的安全性,全站访问建议全部使用HTTPS(SSL加密),收紧安全组规则配置,按照最小化的方式进行管理配置。在高流量的环境下启用弹性伸缩服务进行应对。后期运维人员可依托云运维工具例如备份、监控等进行持续化的运维。
6. 总结
依托阿里云云计算产品提供了一系列基础服务,以更加安全、可靠的方式服务,大大的降低了企业运营成本,人力成本。在业务角度,不用再担心基础设施服务出现故障,在一个平台中即可管理全部的基础服务业务,主要核心重点更倾向于业务发展。