RHCE——六、基于https协议的静态网站

news2025/1/15 12:58:06

RHCE

  • 一、概念解释
    • 1、SSL协议分为两层
    • 2、SSL协议提供的服务
  • 二、HTTPS安全通信机制
    • 1、图解
    • 2、过程
  • 三、使用Apache+mod_ssl组件的加密认证网站
    • 1、概念
    • 2、安装
    • 3、配置文件
    • 4、ssl配置文件的主要参数
  • 四、实验
    • 1、搭建https+ssl的加密认证web服务器
    • 2、组建含多子目录的网站

一、概念解释

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

  • SSL记录协议 (SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能
  • SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等

2、SSL协议提供的服务

  • 认证用户和服务器,确保数据发送到正确的客户机和服务器
  • 加密数据以防止数据中途被窃取
  • 维护数据的完整性,确保数据在传输过程中不被改变

二、HTTPS安全通信机制

1、图解

2、过程

  • (1)客户端(通常是浏览器)向服务端发送加密通信的请求,然后连接到服务端的443端口,这被叫做ClientHello请求,客户端主要向服务器提供以下信息
    • 支持的协议版本,比如TLS 1.0版。
    • 一个客户端生成的随机数1,稍后用于生成"会话密钥"。
    • 支持的加密方法,比如RSA公钥加密。
    • 支持的压缩方法。
  • (2)服务端回应(SeverHello),接收到信息之后给予客户端响应握手信息,服务器的回应包含以下内容:
    • 确认使用的加密通信协议版本,比如TLS 1.0版本,。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
    • 一个服务器生成的随机数2,稍后用于生成"会话密钥"。
    • 确认使用的加密方法,这个加密算法一定是client发送给server加密算法的子集,比如RSA公钥加密
    • 服务器证书:可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,传送的证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名等
    • 除此之外,如果服务器需要使用双向认证,就会再包含一项请求,要求客户端提供"客户端证书"。比如,金融机构往往只允许认证客户连入自己的网络,就会向正式客户提供USB密钥,里面就包含了一张客户端证书
  • (3)客户端回应:客户端收到服务器回应以后进行证书解析,首先会验证证书是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机数3(预主密钥"pre-master key"),接下来是通过随机值1、随机值2和随机数3组装会话秘钥。然后通过服务器端证书的公钥加密会话秘钥,传送加密信息,内容如下:
    • 一个随机数C。该随机数用服务器公钥加密,防止被窃听。
    • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
    • 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验
  • (4)服务器的最后回应:服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的"会话密钥"(对称密钥)。然后,向客户端最后发送下面信息。
    • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
    • 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。
  • 至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用"会话密钥"加密内容。
  • 大致分为三个阶段:
    • (1)(2)认证服务器:浏览器内置一个受信任的CA机构列表,并保存了这些CA机构的证书。第一阶段服务器会提供经CA机构认证颁发的服务器证书,如果认证该服务器证书的CA机构,存在于浏览器的受信任CA机构列表中,并且服务器证书中的信息与当前正在访问的网站(域名等)一致,那么浏览器就认为服务端是可信的,并从服务器证书中取得服务器公钥,用于后续流程。否则,浏览器将提示用户,根据用户的选择,决定是否继续。当然,我们可以管理这个受信任CA机构列表,添加我们想要信任的CA机构,或者移除我们不信任的CA机构。
    • (3)(4)协商会话密钥:客户端在认证完服务器,获得服务器的公钥之后,利用该公钥与服务器进行加密通信,协商出两个会话密钥,分别是用于加密客户端往服务端发送数据的客户端会话密钥,用于加密服务端往客户端发送数据的服务端会话密钥。在已有服务器公钥,可以加密通讯的前提下,还要协商两个对称密钥的原因,是因为非对称加密相对复杂度更高,在数据传输过程中,使用对称加密,可以节省计算资源。另外,会话密钥是随机生成,每次协商都会有不一样的结果,所以安全性也比较高。
    • 加密通讯:此时客户端服务器双方都有了本次通讯的会话密钥,之后传输的所有Http数据,都通过会话密钥加密。这样网路上的其它用户,将很难窃取和篡改客户端和服务端之间传输的数据,从而保证了数据的私密性和完整性。

PKI(Public Key Infrastructure)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。一个机构通过采用PKI 框架管理密钥和证书可以建立一个安全的网络环境
PKI 主要包括四个部分:X.509 格式的证书(X.509 V3)和证书废止列表CRL(X.509 V2);CA 操作协议;CA管理协议;CA政策制定
X.509通用的证书格式包含三个文件:key,csr,crt。
key是私钥文件
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息

三、使用Apache+mod_ssl组件的加密认证网站

1、概念

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

2、安装

[root@server ~]# yum  install  mod_ssl  -y

3、配置文件

  • 主配置文件:/etc/httpd/conf.d/ssl.conf
  • 证书文件:/etc/pki/tls/certs/xxxx.crt
  • 私钥文件:/etc/pki/tls/private/xxxx.key

4、ssl配置文件的主要参数

[root@server ~]# vim  /etc/httpd/conf.d/ssl.conf   # 打开主配置文件
# 常用参数如下:
5 Listen 443 https   # 监听的端口号
18 SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog # 存储证书的密码信息
23 SSLSessionCache   shmcb:/run/httpd/sslcache(512000)   # ssl的缓存,位置
24 SSLSessionCacheTimeout  300  # 换存的超时时长
40 <VirtualHost _default_:443>  # 重要,定义虚拟主机的信息
48 ErrorLog logs/ssl_error_log  # 错误日志
49 TransferLog logs/ssl_access_log  # 传输日志
50 LogLevel warn  # 日志等级
54 SSLEngine on  # ssl引擎开启
66 SSLHonorCipherOrder on  # 协商算法
85 SSLCertificateFile /etc/pki/tls/certs/localhost.crt  # 证书存储路径
93 SSLCertificateKeyFile /etc/pki/tls/private/localhost.key  # 私钥文件路径
202 </VirtualHost>  # 虚拟主机结束定义

四、实验

1、搭建https+ssl的加密认证web服务器

  • 第一步:准备工作
# 恢复快照
[root@server ~]# setenforce  0           
[root@server ~]# systemctl stop  firewalld
[root@server ~]# systemctl disable  firewalld
[root@server ~]# yum  install  httpd  mod_ssl -y
[root@server ~]# systemctl start  httpd   # 启动httpd
[root@server ~]# systemctl enable  httpd  # 设置开机启动

在这里插入图片描述

  • 第二步:新建存储网站数据文件的目录
[root@server ~]# mkdir  -p  /www/zy
# 私用xftp将windows的zy网站数据文件上传到/www/zy目录中
  • 第三步:在/etc/pki/tls/private目录中生成私钥文件
[root@server ~]# cd  /etc/pki/tls/private   # 进入私钥文件存储目录
[root@server private]# openssl  genrsa  -aes128  2048 > zy.key # 建立私钥文件
Enter PEM pass phrase:               # 密码123456
Verifying - Enter PEM pass phrase:   # 再输一遍密码123456

在这里插入图片描述

  • 第四步:在/etc/pki/tls/certs目录中生成证书
[root@server private]# cd  /etc/pki/tls/certs
[root@server 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:  # 输入私钥加密密码123456
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                              # 国家代码
State or Province Name (full name) []:shanxi                      # 省份
Locality Name (eg, city) [Default City]:xi'an                     # 城市
Organization Name (eg, company) [Default Company Ltd]:openlab     # 公司
Organizational Unit Name (eg, section) []:RHCE                    # 部门
Common Name (eg, your name or your server's hostname) []:server   # 主机名
Email Address []:andy@qq.com                                      # 邮箱

# 输入内容时,若输入错误,使用ctrl+退格 进行删除

在这里插入图片描述

  • 第五步:修改配置文件
[root@server certs]# cd  ~
[root@server ~]# vim  /etc/httpd/conf.d/ssl.conf 
# 定位第一行,输入以内内容
<virtualhost  192.168.13.134:443>
        sslengine on
        SSLCertificateFile /etc/pki/tls/certs/zy.crt
        SSLCertificateKeyFile /etc/pki/tls/private/zy.key
        servername      192.168.13.134
        documentroot    /www/zy
</virtualhost>

<directory /www/zy>
        allowoverride  none
        require all     granted
</directory>

在这里插入图片描述

  • 第六步:重启服务
[root@server certs]# cd  ~
[root@server ~]# vim  /etc/httpd/conf.d/ssl.conf 
[root@server ~]# systemctl  restart  httpd
🔐 Enter TLS private key passphrase for 192.168.13.134:443 (RSA) : ******   # 需要输入私钥的密码123456               
  • 第七步:测试
# 在windows端打开浏览器,输入https://192.168.13.134,点击高级->接受风险并继续

2、组建含多子目录的网站

  • 组建多个子目录网站www.openlab.com,该网站有2个子目录www.openlab.com/file和www.openlab.com/ftp,要求:
    • file数据使用http读取
    • ftp数据使用https读取
  • 第一步:准备工作
# 恢复快照
[root@server ~]# setenforce  0           
[root@server ~]# systemctl stop  firewalld
[root@server ~]# systemctl disable  firewalld
[root@server ~]# yum  install  httpd  mod_ssl -y
[root@server ~]# systemctl start  httpd   # 启动httpd
[root@server ~]# systemctl enable  httpd  # 设置开机启动
  • 第二步:新建网页目录并建立网页
[root@server ~]# mkdir  -p  /www/file
[root@server ~]# mkdir  -p  /www/ftp
[root@server ~]# echo  "file"  >  /www/file/index.html  # 写入网站数据
[root@server ~]# echo  "ftp"  >  /www/ftp/index.html
  • 第三步:建立本地hosts域名映射
[root@server ~]# vim  /etc/hosts   # 添加如下内容
192.168.48.130  www.openlab.com
  • 第四步:建立file网站
[root@server ~]# vim  /etc/httpd/conf/httpd.conf 
<virtualhost  192.168.48.130>
        documentroot    /www/file
        alias  /file  /www/file
        servername      'file'
</virtualhost>

<directory  /www/file>
        allowoverride  none
        require  all  granted
</directory>  
  • 第五步:建立https的ftp网站
[root@server ~]# openssl  genrsa  -aes128  2048 > /etc/pki/tls/private/ftp.key    # 设置私钥文件
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
[root@server ~]# openssl req -utf8 -new -key /etc/pki/tls/private/ftp.key -x509 -days 365 -out /etc/pki/tls/certs/ftp.crt   # 设置证书
Enter pass phrase for /etc/pki/tls/private/ftp.key:  # 输入私钥密码123456
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
State or Province Name (full name) []:shanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:openlab
Organizational Unit Name (eg, section) []:RHCE
Common Name (eg, your name or your server's hostname) []:server
Email Address []:andy@qq.com

[root@server ~]# vim  /etc/httpd/conf.d/ssl.conf 
# 定位第一行,输入以下内容:
<virtualhost 192.168.48.130:443>
        sslengine on
        SSLCertificateFile /etc/pki/tls/certs/ftp.crt
        SSLCertificateKeyFile /etc/pki/tls/private/ftp.key
        servername      'ftp'
        documentroot    /www/ftp
        alias  /ftp  /www/ftp        # 设置别名访问二级目录
</virtualhost>

<directory  /www/ftp>
        allowoverride  none
        require all granted
</directory>
  • 第六步:重启服务
[root@server ~]# systemctl  restart  httpd
🔐 Enter TLS private key passphrase for ftp:443 (RSA) : ******                # 输入私钥的密码123456
  • 第七步:测试
# 虚拟机中打开火狐浏览器,输入www.openlab.com/file
# 虚拟机中打开火狐浏览器,输入https://www.openlab.com/ftp,点击高级->接受风险并继续

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

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

相关文章

干货分享:仓库管理系统WMS有哪些功能?

阅读本文&#xff0c;您可以了解&#xff1a;1、仓库管理系统WMS是什么&#xff1b;2、仓库管理系统WMS有哪些功能 一、仓库管理系统WMS是什么 仓库管理系统&#xff08;Warehouse Management System&#xff0c;简称WMS&#xff09;是一款用于优化和管理仓库功能的软件系统。…

如何撰写骨灰级博士论文?这是史上最全博士论文指导!

博士论文的写作是博士研究生主要要完成的工作。由于存在着较高的难度&#xff0c;较长的写作周期&#xff0c;以及在创新&#xff0c;写作规范&#xff0c;实际及理论意义等方面有着比较高的要求&#xff0c;博士论文的完成一般说来是有相当难度的。一篇好的博士论文不仅是一本…

回归预测 | MATLAB实现FA-ELM萤火虫算法优化极限学习机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现FA-ELM萤火虫算法优化极限学习机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现FA-ELM萤火虫算法优化极限学习机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍…

AMEYA360代理:罗姆ROHM荣获大陆集团2022年度最佳供应商奖

全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)荣获Continental AG(以下简称“大陆集团”)“2022年度最佳供应商奖”。 自2008年以来&#xff0c;大陆集团每年都会从客户满意度、品质、供应、参与度和采购情况等不同角度进行年度分析&#xff0c;以表彰在各个层面做出杰…

Java缓存介绍

使用场景 CPU占用&#xff1a;如果你有某些应用需要消耗大量的cpu去计算&#xff0c;比如正则表达式&#xff0c;如果你使用正则表达式比较频繁&#xff0c;而其又占用了很多CPU的话&#xff0c;那你就应该使用缓存将正则表达式的结果给缓存下来。 数据库IO性能&#xff1a;如…

C++信息学奥赛1131:基因相关性

这段代码的功能是比较两个字符串的相似度&#xff0c;并根据给定的阈值判断是否相似。 解析注释后的代码如下&#xff1a; #include <iostream> #include <string> using namespace std;int main() {double bf; // 定义双精度浮点数变量bf&#xff0c;用于存储阈…

Promise.all和promise.race的应用场景举例

Promise.all( ).then( )适用于处理多个异步任务&#xff0c;且所有的异步任务都得到结果时的情况。 <template><div class"box"><el-button type"primary" plain click"clickFn">点开弹出框</el-button></div> &…

Docker构建镜像

Docker根据Dockerfile文件构建镜像 在实际生产中&#xff0c;常常使用Dockerfile构建企业级生产环境镜像,然后再部署在我们的生产环境中&#xff0c;本文将从从零开始介绍Dockerfile如何使用&#xff0c;构建镜像。 Dockerhub官网地址&#xff1a;https://registry.hub.docke…

小白到运维工程师自学之路 第七十九集 (基于Jenkins自动打包并部署Tomcat环境)1

一、传统的流程 1、传统网站部署的流程 在运维过程中&#xff0c;网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分 析-->原型设计-->开发代码-->提交代码-->内网部署-->内网测试-->确认上线-->备份数据-->外网更新-->外网测试--&g…

2023年7月京东净水器行业品牌销售排行榜(京东数据分析软件)

伴随消费升级及健康生活理念的流行&#xff0c;消费者对饮水健康的关注度也逐步提高。加之经净水器处理的水在安全性、便捷性等方面的优势得到认可&#xff0c;净水器这一电器的市场占比也不断提高。在家电行业整体低迷的环境下&#xff0c;净水器的销量销额仍保持正向增长。 …

VBA Excel自定义函数的使用 简单的语法

一个简单的教程&#xff0c;实现VBA自定义函数。 新建模块 复制后面的代码放进来 函数的入口参数不定义&#xff0c;则认为是一块区域&#xff1b; 反之&#xff0c;如FindChar1 As String&#xff0c;则认为是输入的单值。 循环和分支如下例子&#xff0c;VB比较接近自然语…

OpenAI 组件 | 加速 OpenAI API 在项目中的集成

在当今这个快节奏的技术世界中&#xff0c;将 OpenAI 的功能集成到项目中已经成为一种趋势。OpenAI 提供了一系列强大的自然语言处理API。然而&#xff0c;集成这些 API 的过程复杂且耗时&#xff0c;通常需要大量精力和专业知识。为了简化集成过程&#xff0c;我们开发了 Open…

keepalived+haproxy 搭建高可用高负载高性能rabbitmq集群

一、环境准备 1. 我这里准备了三台centos7 虚拟机 主机名主机地址软件node-01192.168.157.133rabbitmq、erlang、haproxy、keepalivednode-02192.168.157.134rabbitmq、erlang、haproxy、keepalivednode-03192.168.157.135rabbitmq、erlang 2. 关闭三台机器的防火墙 # 关闭…

基于swing的火车站订票系统java jsp车票购票管理mysql源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于swing的火车站订票系统 系统有2权限&#xff1a;…

【广州华锐视点】VR技术带你身临其境体验地震逃生全过程

虚拟现实&#xff08;VR&#xff09;技术在模拟地震逃生体验方面具有重要的意义。地震是一种常见的自然灾害&#xff0c;对人类的生命和财产安全造成巨大威胁。通过利用VR技术&#xff0c;人们可以在安全的环境中亲身体验不同震级的地震情景&#xff0c;从而增加对地震的认识和…

编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。

环境&#xff1a; CentOS 7 Linux 3.10.0-1160.el7.x86_64 具体要求如下&#xff1a; &#xff08;1&#xff09;基于centos基础镜像&#xff1b; &#xff08;2&#xff09;指定作者信息&#xff1b; &#xff08;3&#xff09;安装nginx服务&#xff0c;将提供的dest目录…

uview2.0自定义tabbar

tabbar组件 <template><u-tabbar :value"tab" change"changeTab" :fixed"true" :border"true" :placeholder"true":safeAreaInsetBottom"true"><u-tabbar-item text"消息" icon"c…

react-sortable-hoc 拖拽列表上oncick事件失效

const SortableItem SortableElement(({value, onChangePayment}) > {const onClickItem () > {// todo}return (<View className"-item" onClick{onClickItem}>xxxxxxx</View>) })问题&#xff1a;onClick 无效 解决&#xff1a;添加distance

Lazada上成功吸引消费者有哪些小妙招?

作为销售平台来说,其实网上可以搜索到,或者通过下载软件轻松就可以将APP下载了,然后接下来就是注册和开店去吸引消费者的过程了。对于现在比较火爆的Lazada来说,如果想要在上面成功吸引更多的消费者,需要有哪些优质的推广策略呢? 品牌效应很重要 其实Lazada首先走的就是品牌效…

PAT 1114 Family Property

个人学习记录&#xff0c;代码难免不尽人意 Sample Input: 10 6666 5551 5552 1 7777 1 100 1234 5678 9012 1 0002 2 300 8888 -1 -1 0 1 1000 2468 0001 0004 1 2222 1 500 7777 6666 -1 0 2 300 3721 -1 -1 1 2333 2 150 9012 -1 -1 3 1236 1235 1234 1 100 1235 5678 9012 …