SSL协议

news2024/12/23 10:48:50

目录

理论部分

实验部分

环境搭建

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 openssl

openssl-1.0.2k-25.el7_9.x86_64

[root@web1 ~]# openssl version

OpenSSL 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 2048

Generating 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/hosts

192.168.1.6 www.benet.com

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/71965.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是股票委托接口?

什么是股票委托接口?相信大家对这些做股票量化交易接口系统都有一定是了解,其实股票委托接口是一些预先定义的接口,如函数与HTTP接口,以及api接口等这些,或指软件系统不同组成部分衔接的协议,用来提供应用程…

举个栗子~Tableau 技巧(246):将标签置于条形图的末端

用条形图呈现数据时,为增加直观性,通常会用标签显示条形对应的数值。Tableau 默认将标签呈现在条形最右侧外部,我们通过设置格式,可以将其挪动到条形里的中间或最左边。 有数据粉反馈:有没有办法,将数值标…

【C语言经典面试题】memcpy函数有没有更高效的拷贝实现方法?

【C语言经典面试题】memcpy函数有没有更高效的拷贝实现方法? 我相信大部分初中级C程序员在面试的过程中,可能都被问过关于memcpy函数的问题,甚至需要手撕memcpy。本文从另一个角度带你领悟一下memcpy的面试题,你可以看看是否能接得…

4D毫米波雷达开启感知新大陆,这家企业给出这样的答案

当前,自动驾驶行业的内卷已是不争的事实。无论是以叠加传感器为手段的“堆料”,还是以测试里程论性能高低的“堆数据”,最终都指向了同一个问题:感知瓶颈。随着自动驾驶行业越来越趋于理性,技术的研发也将回归最基础的…

【数据可视化】第五章—— 基于PyEcharts的数据可视化

文章目录1. pyecharts数据可视化介绍2.pyecharts安装与使用3.全局配置项和系列配置项3.1 全局配置项3.1.1 基本元素配置项3.1.2 坐标轴配置项3.1.3 原生图形配置项3.2 系列配置项3.2.1 样式类配置项3.2.2 标记类型配置项3.2.3 其它类配置项4.…

【性能优化】pc端与移动端图片优化篇

目录 优化方向: 优化方式 1.域名收敛 2.使用CDN节点 3.设置缓存 4.图片懒加载 5.用户图片上传限制 6.使用OSS服务压缩 7.使用OSS缩放 8.合成雪碧图 9.使用svg图片 在前端项目中图片的性能优化也有不少可以提升的方向 优化方向: 减少请求数量…

Go语言基础知识

Go语言基础知识 一、准备工作 1.1下载安装Go 地址:https://studygolang.com/dl 1、根据系统来选择下载包 2、下载完成后直接双击运行 3、一路next,注意选择安装路径 4、在控制台窗口输入“go version”可查看Go版本,检测是否安装成功 5、…

基于STAN的风力发电预测(Python代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🎉作者研究:🏅🏅🏅本科计算机专业,研究生电气学硕…

应届生自学Python两个月,为什么找不到工作?

今天我们来看一个同龄小伙伴自学Python的困惑,他自学了2个月Python就想找一份好工作,但是四处碰壁。对于这样的难题,我们来看看前辈们是如何解决的。 如果你想要学好python最好加入一个组织,这样大家学习的话就比较方便&#xff…

华夏教师杂志华夏教师杂志社华夏教师编辑部2022年第24期目录

视点_青少年党史学习教育《华夏教师》投稿:cn7kantougao163.com 青少年学党史的震阳实践 沙夕岗; 4-527 视点_德育 幸福365,成长每一天——苏州工业园区星澄学校“幸福365”德育课程简介 赵志德; 6-745 学校_基层党建 “1X”党员引领匠心路—…

高通Ride软件开发包使用指南(2)

高通Ride软件开发包使用指南(2)3 Ubuntu系统设置3.1前提条件3.2安装Ubuntu3.3 安装 docker3.4 在Linux主机上安装QNX软件中心3 Ubuntu系统设置 以下步骤准备Ubuntu系统使用docker图像构建工具链SDK,并启用可视化。 3.1前提条件 确保您的电…

三年PHP经验如何提高工资?PHP接单推荐

大家都知道,一般来说以PHP来做开发的有很大一部分是外包公司,如果简简单单的干了一到两年多,那么我相信你的经验值肯定会大幅度提升,但是如果说要真正提高技术或者很快的提高工资,这在我看来,相较于其他语言…

管理员必看!10+个Salesforce仪表板使用技巧

Salesforce仪表板是一种将报表中关键数据可视化的简单方法,可以帮助识别趋势、整理数量并衡量其活动的影响。 本篇文章将分享10个仪表板使用技巧,有效利用这个开箱即用的核心Salesforce功能,可以帮助管理员和用户事半功倍。 01 提高仪表板的…

二苯并环辛炔DBCO-PEG3-OTs,二苯并环辛炔-三聚乙二醇-对甲苯磺酰酯

●外观以及性质: DBCO(二苯并环辛炔)是一种环炔烃,可以通过在水溶液中通过应变促进的1,3-偶极环加成反应与叠氮化物反应,这种生物正交反应也称为无铜点击反应。DBCO 点击化学可以在水性缓冲液中运行,也可以…

高通Ride软件开发包使用指南(3)

高通Ride软件开发包使用指南(3)4准备软件下载平台4.1 CDT供应4.1.1使用QFIL的CDT编程4.1.2使用fastboot进行CDT编程4.1.3 CDT验证4准备软件下载平台 所有Snapdragon Ride参考平台都应已完成通用闪存(UFS)编程和配置数据表&#x…

spring 事务传播行为以及失效原因

今天在查看以前写的代码时,看到了事务的使用,感觉自己对这一块并不是特别清晰,所以就系统的学习了一下。在学习过程中发现很多地方自己以前理解的还是有点不对,所以记录一下学习笔记,希望帮助到大家。 一、事务传播行…

随机接入流程 - 2-Step RA

Overview 在LTE和R15 NR中,终端以及基站采用的接入技术均为四步随机接入(4-Step Random Access)技术,即终端和基站之间需要经过5次信息交互(这里我们所说是的基于竞争的随机接入过程,对于非竞争随机接入过程只需要3次信息交互)才能完成随机接…

m基于FPGA的数字下变频verilog设计

目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整FPGA 1.算法描述 整个数字下变频的基本结构如下所示 NCO使用CORDIC算法,CIC采用h结构的CIC滤波器,HBF采用复用结构的半带滤波器,而FIR则采用DA算法结构。 这里,我们…

华硕编程竞赛11月JAVA专场 B题召唤精灵 题解

作者主页:Designer 小郑 作者简介:软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲…

ATtiny13与Proteus仿真-GPIO与点亮LED仿真

GPIO与点亮LED仿真 1、GPIO介绍 ATtiny13的端口具有(Read-Modify-Write,读取-更改-写入)基础功能。这就意味着,可以通过 SBI 和 CBI 指令更改一个端口引脚的方向,而不会影响其他端口方向。同时,如果更改一个端口的值,也不会影响其他的端口的值。 ATtiny13的端口输出缓冲…