SSL协议
创始人
2024-03-26 15:57:36
0

目录

理论部分

实验部分

环境搭建

web1配置

配置负载均衡

web2配置

lb配置


        实验目标:模拟颁发证书实现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为例。

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

web1配置

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

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

[root@web1 ~]# rpm -qa opensslopenssl-1.0.2k-25.el7_9.x86_64[root@web1 ~]# openssl versionOpenSSL 1.0.2k-fips  26 Jan 2017

2. 创建私钥

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

[root@web1 ~]# mkdir -p /etc/nginx/ssl_key[root@web1 ~]# cd /etc/nginx/ssl_key/[root@web1 ssl_key]# openssl genrsa -idea -out server.key 2048Generating RSA private key, 2048 bit long modulus.........................................................+++.........................................+++e is 65537 (0x10001)Enter pass phrase for server.key: //新建两次秘钥(4位)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. 创建网站服务

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

[root@web1 ssl_key]# cd /etc/nginx/conf.d/
[root@web1 conf.d]# rm -rf default.conf
[root@web1 conf.d]# vim web.conf
server {listen 443 ssl;server_name www.benet.com;ssl_certificate ssl_key/server.crt;ssl_certificate_key ssl_key/server.key;location / {root /www;index index.html;}
}
[root@web1 conf.d]# mkdir /www
[root@web1 conf.d]# echo "192.168.1.4" > /www/index.html
[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,之后就可以直接访问域名查看了。

[root@web1 conf.d]# vim web.conf
server {listen 443 ssl;server_name www.benet.com;ssl_certificate ssl_key/server.crt;ssl_certificate_key ssl_key/server.key;location / {root /www;index index.html;}
}
server {listen 80;server_name www.benet.com;
#       rewrite .* https://https.benet.com; //下面四个都可以重定向,指定一条即可
#       rewrite .* https://$host$request_uri redirect;
#       rewrite .* https://$server_name$request_uri redirect;rewrite .* https://$server_name$1 redirect;
}
[root@web1 conf.d]# systemctl restart nginx

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

配置负载均衡

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

web2配置

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

[root@web2 ~]# scp -rp root@192.168.1.4:/etc/nginx/* /etc/nginx/[root@web2 ~]# cd /etc/nginx/conf.d/[root@web2 conf.d]# rm -rf default.conf[root@web2 conf.d]# systemctl restart nginx[root@web2 conf.d]# mkdir /www[root@web2 conf.d]# echo "192.168.1.5" > /www/index.html

lb配置

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

[root@lb ~]# scp -rp root@192.168.1.4:/etc/nginx/ssl_key /etc/nginx/
[root@lb ~]# cd /etc/nginx/conf.d/
[root@lb conf.d]# rm -rf default.conf
[root@lb conf.d]# vim lb.conf
upstream web {server 192.168.1.4:443;server 192.168.1.5:443;}
server {listen 443 ssl;server_name www.benet.com;ssl_certificate ssl_key/server.crt;ssl_certificate_key ssl_key/server.key;location / {proxy_pass https://web;}
}
server {listen 80;server_name www.benet.com;return 302 https://$server_name$1;
}
[root@lb conf.d]# systemctl restart nginx

2. 验证

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

[root@client ~]# vim /etc/hosts192.168.1.6 www.benet.com

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

相关内容

热门资讯

不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
APK正在安装,但应用程序列表... 这个问题可能是由于以下原因导致的:应用程序安装的APK文件可能存在问题。设备上已经存在同名的应用程序...
安卓文字转语音tts没有声音 安卓文字转语音TTS没有声音的问题在应用中比较常见,通常是由于一些设置或者代码逻辑问题导致的。本文将...
报告实验.pdfbase.tt... 这个错误通常是由于找不到字体文件或者文件路径不正确导致的。以下是一些解决方法:确认字体文件是否存在:...