第四章Web服务器(2)


第四章Web服务器(2)


1.基于https协议的静态网站


1.1.概念解释

        超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。

        HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。为了解决HTTP协议的这一缺陷,需要使用另一种协议: 安全套接字层超文本传输协议HTTPS。
        HTTPS (全称: Hyper Text Transfer Protocol over Secure Socket Layer 或 HypertextTransferProtocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道

        HTTPS并不是一个新协议,而是HTTP+SSL (TLS)。原本HTTP先和TCP (假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间

        SSL 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。到了1999年,SSL 应用广泛,已经成为互联网上的事实标准。IETF 就把SSL标准化。标准化之后SSL被改为 TLS (Transport Layer Security传输层安全协议)
1.1.1 SSL协议分为两层:
        ·SSL记录协议 (SSL Record Protocol) : 它建立在可靠的传输协议 (如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能
        SSL握手协议 (SSL Handshake Protocol): 它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等

1.1.2 SSL协议提供的服务

        认证用户和服务器,确保数据发送到正确的客户机和服务器
        加密数据以防止数据中途被窃取

        维护数据的完整性,确保数据在传输过程中不被改变

1.2  HTTPS安全通信机制

数字证书:

HTTPS安全通信机制:

1.2.2.过程
(1)客户端(通常是浏览器)向服务端发送加密通信的请求,然后连接到服务端的443
端口,这被叫做ClientHello请求,客户端主要向服务器提供以下信息

        支持的协议版本,比如TLS 1.0版o
        一个客户端生成的随机数1,稍后用于生成”会话密钥”
        支持的加密方法,比如RSA公钥加密0
        支持的压缩方法。
(2)服务端回应 (SeverHello),接收到信息之后给予客户端响应握手信息,服务器的回应包含以下内容:
        确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致服务器关闭加密通信

        一个服务器生成的随机数2,稍后用于生成”会话密钥”

        确认使用的加密方法,这个加密算法一定是client发送给server加密算法的子集,比如RSA公钥加密
        服务器证书:可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通a过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,传送的证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名等

        除此之外,如果服务器需要使用双向认证,就会再包含一项请求,要求客户端提供”客户端证0书”。比如,金融机构往往只允许认证客户连入自己的网络,就会向正式客户提供USB密钥,里面就包含了一张客户端证书
 

(3)客户端回应:客户端收到服务器回应以后进行证书解析,首先会验证证书是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机数3(预主密钥"pre-master key”),接下来是通过随机值1、随机值2和随机数3组装会话秘钥。然后通过服务器端证书的公钥加密会话秘钥,传送加密信息,内容如下:

        一个随机数C。该随机数用服务器公钥加密,防止被窃听

        编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送

        客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容9的hash值,用来供服务器校验
(4)服务器的最后回应: 服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的”会话密钥”(对称密钥) 。然后,向客户端最后发送下面信息

        编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送

        服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

        至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用“会话密钥”加密内容。

大致分为三个阶段:
        (1) (2)认证服务器: 浏览器内置一个受信任的CA机构列表,并保存了这些CA机构的证书。第一阶段服务器会提供经CA机构认证颁发的服务器证书,如果认证该服务器证书的CA机构,存在于浏览器的受信任CA机构列表中,并且服务器证书中的信息与当前正在访问的网站(域名等)一致,那么浏览器就认为服务端是可信的,并从服务器证书中取得服务器公钥,用于后续流程。否则,浏览器将提示用户,根据用户的选择,决定是否继续。当然,我们可以管理这个受信任CA机构列表,添加我们想要信任的CA机构,或者移除我们不信任的CA机构。

        (3) (4)协商会话密镇:客户端在认证完服务器,获得服务器的公钥之后,利用该公钥与服务器进行加密通信,协商出两个会话密钥,分别是用于加密客户端往服务端发送数据的客户端会话密钥,用于加密服务端往客户端发送数据的服务端会话密钥。在已有服务器公钥,可以加密通讯的前提下,还要协商两个对称密钥的原因,是因为非对称加密相对复杂度更高,在数据传输过程中,使用对称加密,可以节省计算资源。另外,会话密钥是随机生成,每次协商都会有不一样的结果,所以安全性也比较高。

        加密通讯: 此时客户端服务器双方都有了本次通讯的会话密钥,之后传输的所有Http数据都通过会话密钥加密。这样网路上的其它用户,将很难窃取和篡改客户端和服务端之间传输的数据,从而保证了数据的私密性和完整性

        PKI(Public Key lnfrastructure) 公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。一个机构通过采用PKI 框架管理密和证书可以建立一个安全的网络环境
        PKI 主要包括四个部分:X509 格式的证书(X509 V3) 和证书废止列表CRL (X509 V2)CA 操作协议;CA管理协议;CA政策制定
        X.509通用的证书格式包含三个文件: key,csr,crt。

                key是私钥文件
                csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
                crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息

1.3.使用Apache+mod ssl组件的加密认证网站


1.3.1.概念:
        mod_ssl组件:是apache的一个模块,以openssl的工具箱为基础专门为apache提供密码保护的一种组件模块

1.3.2.安装

 [root@server ~]# yum insta11 mod_ss1-V

1.3.3.配置文件:

        主配置文件: /etc/httpd/conf.d/ssl.conf

        证书文件: /etc/pki/tls/certs/xxxx.crt

        私钥文件: /etc/pki/tls/private/xxxx.key

1.3.5 实验1

        搭建http+ssl加密认证的web服务器


第一步:准备工作

# 恢复快照
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewa11d
[root@server ~]# yum instal1 httpd mod_ss1
[root@server ~]# systemct1 start httpd
[root@server ~]# systemctl enable httpd

第二步:创建验证证书真实性的私钥文件

[root@server ~]# cd /etc/pki/tIs/private/

[root@server private]# openssl genrsa -aes128 2048 > zy.key # 创建私钢文件

                                                密钥类型:genrsa                密钥长度:2048位

Enter PEM pass phrase:                # 设置私钥文件加密的密码123456

Verifying - Enter PEM pass phrase:                # 在输入一遍

第三步:创建数字证书

[root@node2 certs]# openssl  req  -utf8 -new -key /etc/pki/tls/private/zy.key -x509 -days 365 -out zy.crt

[root@node2 certs]# openssl  req  -utf8 -new -key /etc/pki/tls/private/zy.key -x509 -days 365 -out zy.crt
Enter pass phrase for /etc/pki/tls/private/zy.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:86                # 国家代码:86
State or Province Name (full name) []:shannxi       # 省份:陕西
Locality Name (eg, city) [Default City]:xi'an       # 城市:西安
Organization Name (eg, company) [Default Company Ltd]:openlab      # 公司名:openlab
Organizational Unit Name (eg, section) []:RHCE                     # 部门:RHCE
Common Name (eg, your name or your server's hostname) []:server    # 主机名:server
Email Address []:andy@qq.com                        # 邮箱:andy@qq.com
[root@node2 certs]# 

# 面试题: 数字证书的包含信息有:

# 国家代码: 86
# 省份: shanxi
# 城市: xi'an
# 公司: openlab
# 部门: RHCE
# 主机名: server
# 邮箱: andy@qq.com

第四步:修改ssl配置文件

主要内容: 

<VirtualHost _default_:443>
        ErrorLog logs/ssl error log
        TransferLog logs/ssl access_log
        LogLevel warn
        SSLEngine on
        SSLProtocol all -SSLv3
        SSLProxyProtocol all -SSLv3
        SSLHonorCipherOrder on
        SSLCipherSuite PROFILE=SYSTEMSSLProxyCipherSuite PROFILE=SYSTEM
        SSLCertificateFile /etc/pki/tls/certs/localhost.crt
        SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
        SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt
        SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
        SSLVerifyClient require
        SSLVerifyDepth 10
</VirtualHost>

<virtualhost 192.168.17.132:443>                                            # 设置虚拟主机区域配置
        sslengine       on                # 证书开启ssl
        SSLCertificateFile        /etc/pki/tls/certs/zy.crt                   # 证书储存路径

        SSLCertificateKeyFile        /etc/pki/tls/private/zy.key        # 私钥文件路径
        servername      191.168.17.132        # 主机名或域名
        documentroot    /zy                           # 启动目录
        <directory /zy>                                  # 目录权限
                allowoverride   none
                require all     greanted
        </directory>
</virtualhost>

第五步:创建网站文件

[root@node2 ~]# mkdir /zy
[root@node2 ~]# echo "xhxhdwsacwfsdcx"  > /zy/index.html

第六步:重启并进行测试

root@server ~]# systemctl restart httpd                # 需要输入证书私的加密密码123456
Enter TlS  private  key passphrase for 192.168.48.130:443  (RsA):******
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI 为先的时代,企业如何深度用云?

「又一年云栖&#xff0c;SOFAStack 走向云原生深处。」 SOFAStack 5.0 与蚂蚁集团代码大模型 CodeFuse 全面融合&#xff0c;涵盖设计、研发、测试、运维等领域&#xff0c;提供从领域建模到智能运维的端到端 Copilot 产品解决方案&#xff0c;为企业打造新一代 AI 云原生 Paa…

Python - 利用 OCR 技术提取视频台词、字幕

目录 一.引言 二.视频处理 1.视频样式 2.视频截取 ◆ 裁切降帧 ◆ 处理效果 3.视频分段 三.OCR 处理 1.视频帧处理 2.文本识别结果 3.后续工作与优化 ◆ 识别去重 ◆ 多线程提效 ◆ 片头片尾优化 四.总结 一.引言 视频经常会配套对应的台词或者字幕&#xff0c…

Modern C++ 转换构造函数和类型转换函数

在 C/C 中&#xff0c;不同的数据类型之间可以相互转换。无需用户指明如何转换的称为自动类型转换&#xff08;隐式类型转换&#xff09;&#xff0c;需要用户显式地指明如何转换的称为强制类型转换。 不管是自动类型转换还是强制类型转换&#xff0c;前提必须是编译器知道如何…

温故知新:探究Android UI 绘制刷新流程

一、说明&#xff1a; 基于之前的了解知道ui的绘制最终会走到Android的ViewRootImpl中scheduleTraversals进行发送接收vsync信号绘制&#xff0c;在ViewRootImpl中还会进行主线程检测&#xff0c;也就是我们所谓子线程更新ui会抛出异常。 像我们常用的刷新ui&#xff0c;inval…

华为ipsec vpn双链路主备备份配置案例

配置就是这配置&#xff0c;意外是完成后不通&#xff0c;待以后处理&#xff01; FW_A配置&#xff1a; dhcp enable ip-link check enable ip-link name check_b destination 2.2.2.2 interface GigabitEthernet1/0/0 mode icmp next-hop 202.38.163.2 acl number 3000 rul…

新方向!文心一言X具身智能,用LLM大模型驱动智能小车

具身智能已成为近年来研究的热点领域之一。具身智能强调将智能体与实体环境相结合&#xff0c;通过智能体与环境的交互&#xff0c;来感知和理解世界&#xff0c;最终实现在真实环境中的自主决策和运动控制。 如何基于文心大模型&#xff0c;低成本入门“具身智能”&#xff0…

振南技术干货集:C语言的一些“骚操作”及其深层理解(2)

注解目录 第二章《c语言的一些“操作”及其深层理解》 一、字符串的实质就是指针 &#xff08;如何将 35 转为对应的十六进制字符串”0X23”&#xff1f;&#xff09; 二 、转义符\ &#xff08;打入字符串内部的“奸细”。&#xff09; 三、字符串常量的连接 &#xff…

JAVA基础1:Java概述

1.JAVA语言 语言&#xff1a;人与人交流沟通的表达方式 计算机语言&#xff1a;人与计算机之间进行信息交流沟通的一种特殊语言 JAVA语言是美国Sun公司在1995年推出的计算机语言 JAVA之父&#xff1a;詹姆斯高斯林 2.JAVA语言跨平台原理 跨平台&#xff1a;JAVA程序可以在…

Yolov5 + 界面PyQt5 +.exe文件部署运行

介绍 Yolov5是一种基于深度学习的目标检测算法&#xff0c;PyQt5是一个Python编写的GUI框架&#xff0c;用于创建交互式界面。在部署和运行Yolov5模型时&#xff0c;结合PyQt5可以方便地创建一个用户友好的界面&#xff0c;并将代码打包为.exe文件以供其他人使用。 下面是一个…

学者观察 | 联邦学习与区块链、大模型等新技术的融合与挑战-北京航空航天大学童咏昕

导语 当下&#xff0c;数据已成为经济社会发展中不可或缺的生产要素&#xff0c;正在发挥越来越大的价值。但是在数据使用过程中&#xff0c;由于隐私、合规或者无法完全信任合作方等原因&#xff0c;数据的拥有者并不希望彻底和他方共享数据。为解决原始数据自主可控与数据跨…

新登录接口独立版变现宝升级版知识付费小程序-多领域素材资源知识变现营销系统

源码简介&#xff1a; 资源入口 点击进入 源码亲测无bug&#xff0c;含前后端源码&#xff0c;非线传&#xff0c;修复最新登录接口 梦想贩卖机升级版&#xff0c;变现宝吸取了资源变现类产品的很多优点&#xff0c;摒弃了那些无关紧要的东西&#xff0c;使本产品在运营和变现…

线上SQL超时场景分析-MySQL超时之间隙锁 | 京东物流技术团队

前言 之前遇到过一个由MySQL间隙锁引发线上sql执行超时的场景&#xff0c;记录一下。 背景说明 分布式事务消息表&#xff1a;业务上使用消息表的方式&#xff0c;依赖本地事务&#xff0c;实现了一套分布式事务方案 消息表名&#xff1a;mq_messages 数据量&#xff1a;3…

【LeetCode:2300. 咒语和药水的成功对数 | 二分】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

“三大阶段稳定性测试”筑牢长安链信任基石

前言 随着长安链应用生态的不断丰富、面对的应用场景更加多元&#xff0c;稳定性测试在长安链测试流程中占到越来越重要的位置。本文将介绍长安链稳定性测试的发展历程及如何通过三大阶段稳定性测试应对不断出现的复杂的商业需求&#xff0c;筑牢长安链信任基石。 功能测试和…

IDEA 设置 Git 在左侧展示

File->settings->Version Control->commit 勾选 Use non-model commit interface

AI:77-基于深度学习的工业缺陷检测

🚀 本文选自专栏:人工智能领域200例教程专栏 《人工智能领域200例教程专栏》从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,通过本专栏案例和项目实践,都有参考学习意义。每篇案例都包含代码实例,详细讲解供大家学习。 ✨✨✨ 每一个案例都附带有代码,在本…

MySQL -- 视图

MySQL – 视图 文章目录 MySQL -- 视图一、基本使用二、视图规则和限制 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化也会影响到视图。 一、基本使用…

更新 | Apinto 网关 V0.15 版本发布!

该插件支持对后端服务返回的响应信息进行过滤&#xff0c;包括响应头部、响应体。过滤的响应体字段或响应头将会被移除&#xff0c;不会返回给客户端&#xff0c;从而避免敏感信息的泄漏。 若此时上游服务返回的响应体为&#xff1a; {"code":0,"data":{…

Redis-命令操作Redis

目录 一.Redis简介 二.Redis安装 2.1.Linux安装 2.2.Windows安装 三.Redis常用命令 3.1 Redis字符串 3.2 Redis哈希(Hash) 3.3 Redis列表&#xff08;List&#xff09; 3.4 Redis集合&#xff08;Set&#xff09; 好啦今天就到这里了&#xff01;&#xff01;希望能帮…

如何将系统盘MBR转GPT?无损教程分享!

什么是MBR和GPT&#xff1f; MBR和GPT是磁盘的两种分区形式&#xff1a;MBR&#xff08;主引导记录&#xff09;和GPT&#xff08;GUID分区表&#xff09;。 新硬盘不能直接用来保存数据。使用前应将其初始化为MBR或GPT分区形式。但是&#xff0c;如果您在MBR时需…
最新文章