web服务之https超文本传输安全协议

这篇具有很好参考价值的文章主要介绍了web服务之https超文本传输安全协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

  • 超文本传输协议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之间
  • web服务之https超文本传输安全协议,https,安全,运维,网络
  • SSL 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。到了1999年,SSL 应用广泛,已经成为互联网上的事实标准。IETF 就把SSL 标准化。标准化之后SSL被改为 TLS(Transport Layer Security传输层安全协议)

SSL协议分两层

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

SSL协议提供的服务

  • 认证用户和服务器,确保数据发送到正确的客户机和服务器
  • 加密数据以防止数据中途被窃取
  • 维护数据的完整性,确保数据在传输过程中不被改变
  • web服务之https超文本传输安全协议,https,安全,运维,网络

证书

web服务之https超文本传输安全协议,https,安全,运维,网络
web服务之https超文本传输安全协议,https,安全,运维,网络
web服务之https超文本传输安全协议,https,安全,运维,网络
web服务之https超文本传输安全协议,https,安全,运维,网络
web服务之https超文本传输安全协议,https,安全,运维,网络

https安全通信机制

图解

web服务之https超文本传输安全协议,https,安全,运维,网络

过程

  • (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组件的加密认证网站

概念

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

安装

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

配置文件

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

SSL配置文件的主要参数

#打开主配置文件
[root@server ~]# vim /etc/httpd/conf.d/ssl.conf

#常用参数如下
Listen 443 https  #监听的端口号
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog #存储证书的密码信息
SSLSessionCache   shmcb:/run/httpd/sslcache(512000) #ssl的缓存位置
SSLSessionCacheTimeout  300 #缓存的超时时间
<VirtualHost _default_:443> #定义虚拟主机的信息
	ErrorLog logs/ssl_error_log #错误日志
	TransferLog logs/ssl_access_log #传输日志
	LogLevel warn #日志等级
	SSLEngine on  #ssl引擎开启
	SSLHonorCipherOrder on #协商算法
	SSLCertificateFile  /etc/pki/tls/certs/localhost.crt  #证书存储路径
	SSLCertificateKeyFile  /etc/pki/tls/private/localhost.key #私钥文件路径
</VirtualHost>  # 虚拟主机结束定义

实验

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

  • 第一步:准备工作
[root@server ~]# setenforce  0     
      
[root@server ~]# systemctl stop  firewalld

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

[root@server ~]# systemctl start  httpd   # 启动httpd

[root@server ~]# systemctl enable  httpd  # 设置开机启动
  • 第二步:新建存储网站数据文件的目录
[root@server ~]# mkdir -vp /www/zy
mkdir: 已创建目录 '/www'
mkdir: 已创建目录 '/www/zy'

#使用mobaxterm上传网页
  • 第三步:在 /etc/pki/tls/private目录中生成私钥文件(创建验证证书真实性的私钥文件)
[root@server ~]# cd  /etc/pki/tls/private   # 进入私钥文件存储目录
[root@server private]# openssl  genrsa  -aes128  2048 > zy.key # 建立私钥文件,必须是.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+退格 进行删除


#面试题:数字证书的包含信息有:
#国家代码:86
#省份:shanxi
#城市:xi'an
#公司:openlab
#部门:RHCE
#主机名:server
#邮箱:andy@qq.com
  • 第五步:修改ssl配置文件
[root@server certs]# cd  ~
[root@server ~]# vim  /etc/httpd/conf.d/ssl.conf 
# 定位第一行,输入以内内容
<virtualhost  192.168.80.129:443>  #设置虚拟主机区域配置
        sslengine on   #开启ssl
        SSLCertificateFile /etc/pki/tls/certs/zy.crt #证书存储路径
        SSLCertificateKeyFile /etc/pki/tls/private/zy.key #私钥文件路径
        servername      192.168.80.129 #主机名或域名
        documentroot    /www/zy #启动目录
        
        <directory /www/zy>   #目录权限
        	allowoverride  none
        	require all     granted
		</directory>
</virtualhost>
  • 第六步:重启服务
[root@server ~]# systemctl restart httpd
🔐 Enter TLS private key passphrase for 192.168.80.129:443 (RSA) : (press TAB for no echo****** #需要输入私钥的密码123456   
  • 第七步:测试
# 在windows端打开浏览器,输入https://192.168.13.134,点击高级->接受风险并继续

web服务之https超文本传输安全协议,https,安全,运维,网络
web服务之https超文本传输安全协议,https,安全,运维,网络

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

  • 组建多个子目录网站www.openlab.com该网站有2个子目录www.openlab.com/filewww.openlab.com/ftp,要求:

    • file数据使用http读取
    • ftp数据使用https读取
  • 第一步:准备工作

# 恢复快照
[root@server ~]# setenforce  0    
       
[root@server ~]# systemctl stop  firewalld

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

[root@server ~]# systemctl start  httpd   # 启动httpd

[root@server ~]# systemctl enable  httpd  # 设置开机启动
  • 第二步:新建网页目录并建立网页
[root@server ~]# mkdir -vp /www/file
mkdir: 已创建目录 '/www'
mkdir: 已创建目录 '/www/file'
[root@server ~]# mkdir -vp /www/ftp
mkdir: 已创建目录 '/www/ftp'
[root@server ~]# echo "file" > /www/file/index.html
[root@server ~]# echo "ftp" > /www/ftp/index.html
  • 第三步:建立Linux本地hosts域名映射
[root@server ~]# vim /etc/hosts  # 添加如下内容
192.168.80.129  www.openlab.com   #注:只能是主域名,不能是www.openlab.com/file等子目录网站

[root@server ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.80.129   www.openlab.com
  • 第四步:建立http的file网站
[root@server ~]# vim  /etc/httpd/conf/httpd.conf 
<virtualhost  192.168.80.129>
        documentroot    /www/file
        alias  /file  /www/file   #给/www/file建立一个别名/file,当访问/file时,跳转到/www/file
        servername      'file'
        
        <directory  /www/file>
        	allowoverride  none
        	require  all  granted
		</directory>  
</virtualhost>
  • 第五步:建立https的ftp网站
# 设置私钥文件
[root@server ~]# openssl  genrsa  -aes128  2048 > /etc/pki/tls/private/ftp.key    # 设置私钥文件
Enter PEM pass phrase:     #设置私钥密码123456
Verifying - Enter PEM pass phrase:   #再次确认私钥密码123456

# 设置证书
[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


#vim到/etc/httpd/conf/httpd.conf进行配置也可以,因为有include导入
[root@server ~]# vim  /etc/httpd/conf.d/ssl.conf 
# 定位第一行,输入以下内容:
<virtualhost 192.168.80.129: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        # 设置别名访问二级目录
        
        <directory  /www/ftp>
        	allowoverride  none
        	require all granted
		</directory>
</virtualhost>
  • 第六步:重启服务
[root@server ~]# systemctl  restart  httpd
🔐 Enter TLS private key passphrase for ftp:443 (RSA) : ******                # 输入私钥的密码123456
  • 第七步:测试
# 虚拟机中打开火狐浏览器,输入www.openlab.com/file
# 虚拟机中打开火狐浏览器,输入https://www.openlab.com/ftp,点击高级->接受风险并继续

web服务之https超文本传输安全协议,https,安全,运维,网络
web服务之https超文本传输安全协议,https,安全,运维,网络
web服务之https超文本传输安全协议,https,安全,运维,网络文章来源地址https://www.toymoban.com/news/detail-838937.html

到了这里,关于web服务之https超文本传输安全协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • http超文本传输协议

     HTTPS (全称:Hypertext Transfer Protocol Secure   ),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性   。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加

    2024年02月10日
    浏览(139)
  • HTTP 超文本传输协议

    1.HTTP (Hypertext Transfer Protocol,超文本传输协议) 是一种用于传输超媒体文档(例如HTML文件,可以包含文本,视频,图片,音乐,地图定位)的应用层协议,是Web的基础。 HTTP是一个客户端-服务器协议,客户端发起请求,服务器返回响应。 HTTP使用TCP作为其传输层协议,通常

    2024年02月11日
    浏览(39)
  • HTTP超文本传输协议介绍

    转自:微点阅读  https://www.weidianyuedu.com HTTP 的全称是 Hyper Text Transfer Protocol,中文名叫做超文本传输协议,HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证传送高效而准确地传送超文本文档。 HTTP、HTTPS HTTP 的全称是 Hyper Text Transfer Protocol,中文名叫

    2024年01月16日
    浏览(39)
  • HTTP(超文本传输协议)学习

    关于HTTP补学   一、HTTP能干什么 通过下图能够直观的看出:“交换数据 ” 二、HTTP请求例子 一个 HTTP 方法,通常是由一个动词,像 GET、POST 等,或者一个名词,像 OPTIONS、HEAD 等,来定义客户端执行的动作。典型场景有:客户端意图抓取某个资源(使用 GET );发送 HT

    2024年02月14日
    浏览(27)
  • 【网络编程】一文详解http协议(超文本传输协议)

    需要云服务器等云产品来学习Linux的同学可以移步/--腾讯云--/--阿里云--/--华为云--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。    目录 一、http协议 1、http协议的介绍 2、URL的组成 3、urlencode和urldecode 二、http的请求方法、状态码及状态码描述、常见的响

    2024年02月06日
    浏览(55)
  • Http 超文本传输协议基本概念学习摘录

    目录 HTTP协议 超文本传输协议 HyperText超文本 HTML超文本标记语言 HTTP协议原理 请求发送 服务器处理 响应发送 连接关闭或保持 HTTP协议版本 HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3 HTTP请求方法 GET POST PUT DELETE HEAD OPTIONS HTTP请求头字段 HTTP响应状态码 即超文本传输协议(HyperText Transfer

    2024年03月20日
    浏览(39)
  • 【Java网络编程】HTTP超文本传输协议

        HTTP 全称为 Hyper Text Transfer Protocol 超文本传输协议,它是基于 TCP 传输协议构建的应用层协议,作为支撑万维网 www 的核心协议,为了保证其效率及处理大量事务的能力,因此在设计时, HTTP 被制定成为一种无状态协议,也就是说: HTTP 本身不会对发送过的请求和相应的通

    2024年04月09日
    浏览(48)
  • 直播程式源码平台细讲HTTP协议:超文本传输

    HTTP协议的简介   HTTP协议是一种数据通信协议,是浏览器与服务器之间的协议,HTTP协议的中文全称为超文本传输协议,HTTP协议在直播程式源码平台中,承载着数据传输的重要任务,用户可以通过HTTP协议获取直播程式源码平台中提供给用户的信息与视频资源,并通过网络流传

    2024年02月10日
    浏览(33)
  • 超文本传送协议HTTP

    目录 HTTP简介: URL的格式: HTTP协议的特点: HTTP/1.0协议: HTTP/1.1协议: HTTP/2: HTTP代理服务器: HTTP的报文结构: 请求报文的特点: 响应报文的特点: Cookie:  Cookie的工作原理: 万维网的文档: 静态文档: 超文本标记语言HTML 可扩展标记语言XML 可扩展超文本标记语言 XHT

    2024年02月20日
    浏览(32)
  • 8.物联网LWIP,简要介绍http(超文本,URL),html(css,ajax),web实现打开灯

    一。HTTP详解 1.超文本:(HyperText) (1)超文本文件彼此链接,形成 网状 (web),内含有 超链接 (Link)与各种 媒体元素标记 (Markup)。 (2)超文本文件彼此 链接使用URL 表示。(下面解释URL) (3)常见超文本格式是 超文本标记 语言 HTML 。(下面解释HTML,代码) 综上

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包