SSL协议

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
.cn 域名,1个 12个月
应用型负载均衡 ALB,每月750个小时 15LCU
简介: SSL协议

       实验目标:模拟颁发证书实现https访问,搭建负载均衡。

理论部分

1. SSL:安全套接字

       它是由Netscape公司于1994年创建,它旨在通过Web创建安全的Internet通信。

       它是一种标准协议,用于加密浏览器和服务器之间的通信。它允许通过Internet安全轻松地传输账号密码、银行卡、手机号等私密信息。

2. SSL常见应用:

       https:启用ssl加密的安全HTTP传输协议 443

       ipsec vpn

3. PKI

       公钥基础设施,主要功能是绑定证书持有者的身份和相关的密钥对(通过为公钥及相关的用户身份信息签发数字证书),为用户提供方便的证书申请、证书作废、证书获取、证书状态查询的途径,并利用数字证书及相关的各种服务(证书发布,黑名单发布,时间戳服务等),实现通信中各实体的身份认证、完整性、抗抵赖性和保密性。

4. 标准:x.509

       CA:证书颁发机构

       RA:证书注册机构

5. 证书的内容

       申请者的公钥

       申请者的身份标识

       证书有效期

       颁发者的标识

       颁发者的签名

6. HTTPS证书的选择

       专业版OV型  不显示企业名

       高级版EV型  显示企业名

7. HTTPS证书购买选择

       单域名:仅能绑定一个域名

       多域名:能绑定五个域名

       通配符域名:不限个数

8. HTTPS注意事项

       https仅支持二级域名  

       https不支持续费,证书到期重新申请替换

       https显示绿色,说明整个网站都是https的

       https显示黄色,网站代码中包含https不安全链接

       https显示红色,证书不认或过期

9. 企业内部实现https案例:

       生成key密钥

       生成证书签名请求文件(csr文件)

       生成证书签名文件(ca文件)

实验部分

拓扑图如下:

 

环境搭建

       打开四台centos虚拟机,两台搭建web,一台搭建负载均衡,一台只做客户端访问。

       三台主机全都安装nginx,下面以web1为例。

1. [root@web1 ~]# rpm -ivh /media/nginx-rpm/* --nodeps --force
2. 
3. [root@web1 ~]# systemctl start nginx
4. 
5. [root@web1 ~]# systemctl enable nginx
6. 
7. [root@web1 ~]# nginx -V      //查看是否支持ssl需要有 --with-http_ssl_module模块

web1配置

1. 查看是否安装ssl,检查

       如果没有安装可以直接yum安装。

1. [root@web1 ~]# rpm -qa openssl
2. 
3. openssl-1.0.2k-25.el7_9.x86_64
4. 
5. [root@web1 ~]# openssl version
6. 
7. OpenSSL 1.0.2k-fips  26 Jan 2017

2. 创建私钥

       创建ssl目录,本机当CA创建私钥。

1. [root@web1 ~]# mkdir -p /etc/nginx/ssl_key
2. 
3. [root@web1 ~]# cd /etc/nginx/ssl_key/
4. 
5. [root@web1 ssl_key]# openssl genrsa -idea -out server.key 2048
6. 
7. Generating RSA private key, 2048 bit long modulus
8. 
9. .........................................................+++
10. 
11. .........................................+++
12. 
13. e is 65537 (0x10001)
14. 
15. Enter pass phrase for server.key: //新建两次秘钥(4位)
16. 
17. Verifying - Enter pass phrase for server.key: //第二次输入

3. 生成证书,去掉私钥的密码

       生成证书过程中,需要添写国家、省、主机名、邮箱地址等,随便填写即可。

[root@web1 ssl_key]# openssl req -days 3650 -x509 -sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt

4. 创建网站服务

       编辑配置文件指定网站根目录,应用证书。

1. [root@web1 ssl_key]# cd /etc/nginx/conf.d/
2. [root@web1 conf.d]# rm -rf default.conf
3. [root@web1 conf.d]# vim web.conf
4. server {
5.         listen 443 ssl;
6.         server_name www.benet.com;
7.         ssl_certificate ssl_key/server.crt;
8.         ssl_certificate_key ssl_key/server.key;
9. 
10. 
11.         location / {
12.                 root /www;
13.                 index index.html;
14.         }
15. }
16. [root@web1 conf.d]# mkdir /www
17. [root@web1 conf.d]# echo "192.168.1.4" > /www/index.html
18. [root@web1 conf.d]# systemctl restart nginx

5. 验证

       登录客户机,修改hosts文件,访问https://www.benet.com

[root@client ~]# echo "192.168.1.4 www.benet.com" >> /etc/hosts

       修改后访问该网站,点击高级,点击接受风险并继续,就可以看到网站内容了。

6. rewrite地址重写

       因为访问域名时需要添加https,需要将http重定向到https,之后就可以直接访问域名查看了。

1. [root@web1 conf.d]# vim web.conf
2. server {
3.         listen 443 ssl;
4.         server_name www.benet.com;
5.         ssl_certificate ssl_key/server.crt;
6.         ssl_certificate_key ssl_key/server.key;
7. 
8. 
9.         location / {
10.                 root /www;
11.                 index index.html;
12.         }
13. }
14. server {
15.         listen 80;
16.         server_name www.benet.com;
17. #       rewrite .* https://https.benet.com; //下面四个都可以重定向,指定一条即可
18. #       rewrite .* https://$host$request_uri redirect;
19. #       rewrite .* https://$server_name$request_uri redirect;
20.         rewrite .* https://$server_name$1 redirect;
21. }
22. [root@web1 conf.d]# systemctl restart nginx

        现在直接访问www.benet.com就可以直接查看网页内容了。

配置负载均衡

经过上面的配置已经知道了证书的颁发及配置了,下面将配置负载均衡。

web2配置

       因为web1已经配置,现在直接把秘钥目录和web.conf文件复制过来。

1. [root@web2 ~]# scp -rp root@192.168.1.4:/etc/nginx/* /etc/nginx/
2. 
3. [root@web2 ~]# cd /etc/nginx/conf.d/
4. 
5. [root@web2 conf.d]# rm -rf default.conf
6. 
7. [root@web2 conf.d]# systemctl restart nginx
8. 
9. [root@web2 conf.d]# mkdir /www
10. 
11. [root@web2 conf.d]# echo "192.168.1.5" > /www/index.html

lb配置

1. lb也需要秘钥文件从web1复制过来。

1. [root@lb ~]# scp -rp root@192.168.1.4:/etc/nginx/ssl_key /etc/nginx/
2. [root@lb ~]# cd /etc/nginx/conf.d/
3. [root@lb conf.d]# rm -rf default.conf
4. [root@lb conf.d]# vim lb.conf
5. upstream web {
6.         server 192.168.1.4:443;
7.         server 192.168.1.5:443;
8.         }
9. server {
10.         listen 443 ssl;
11.         server_name www.benet.com;
12.         ssl_certificate ssl_key/server.crt;
13.         ssl_certificate_key ssl_key/server.key;
14. 
15. 
16.         location / {
17.                 proxy_pass https://web;
18.         }
19. }
20. server {
21.         listen 80;
22.         server_name www.benet.com;
23.         return 302 https://$server_name$1;
24. }
25. [root@lb conf.d]# systemctl restart nginx

2. 验证

       修改测试机的hosts文件指定lb主机。

1. [root@client ~]# vim /etc/hosts
2. 
3. 192.168.1.6 www.benet.com

       访问www.benet.com,就可以查看到web1和web2的网站内容了。


相关文章
|
Java 应用服务中间件 网络安全
Tomcat配置ssl协议及遇到的问题https页面无法访问
Tomcat配置ssl协议及遇到的问题https页面无法访问
|
1天前
|
安全 网络安全 数据安全/隐私保护
|
1月前
|
安全 网络协议 网络安全
SSL(Secure Sockets Layer)是一种安全协议,用于在客户端和服务器之间建立加密的通信通道。
SSL(Secure Sockets Layer)是一种安全协议,用于在客户端和服务器之间建立加密的通信通道。
|
3月前
|
安全 网络协议 网络安全
SSL协议
SSL协议
61 8
|
3月前
|
安全 算法 应用服务中间件
SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】
SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】 【可验证】 详细描述TLS是安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。
1138 2
|
3月前
|
安全 网络协议 网络安全
|
3月前
|
存储 安全 网络安全
什么是SSL/TLS协议?
【5月更文挑战第14天】什么是SSL/TLS协议?
72 0
|
3月前
|
安全 网络安全 数据安全/隐私保护
HTTP代理SSL连接:保障网络安全的重要协议
HTTP代理SSL连接:保障网络安全的重要协议
|
10月前
|
算法 网络安全 开发工具
TLS/SSL 协议-非对称加密(RSA)原理
TLS/SSL 协议-非对称加密(RSA)原理
202 0
|
3月前
|
安全 Java 网络安全
HTTPS的TLS/SSL协议详解及Java代码示例
HTTPS的TLS/SSL协议详解及Java代码示例
471 0