Https加密超文本传输协议的运用

一、https的相关知识

1.1 https的简介

HTTPS (全称:Hypertext Transfer Protocol Secure   ),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性   。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面  。

1.2 HTTP 与 HTTPS 的区别 

  • HTTP 是明文传输协议,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

  • HTTPS比HTTP更加安全,对搜索引擎更友好,利于SEO,谷歌、百度优先索引HTTPS网页;

  • HTTPS需要用到SSL证书,而HTTP不用【(HTTPS是安装SSL的服务器,HTTP是未安装SSL的服务器)】;

  • HTTPS标准端口443,HTTP标准端口80;

  • HTTPS基于传输层,HTTP基于应用层;

  • HTTPS在浏览器显示绿色安全锁,HTTP没有显示;

 1.3 SSL的相关了解

SSL(Secure Socket Layer)安全套接层是Netscape公司率先采用的网络安全协议。它是在传输通信协议(TCP/IP)上实现的一种安全协议,采用公开密钥技术。SSL广泛支持各种类型的网络,同时提供三种基本的安全服务,它们都使用公开密钥技术。

1.3 SSL/TLS协议和证书的关系 

 为保证网络安全,我们需要给服务器颁发证书,这个证书可以自己生成,但是自己颁发证书是不安全的,可以被别人伪造,一般都是在第三方机构购买证书。实际上证书并不依赖于协议,和协议也并没有太大的关联,协议是由服务配置来决定的,而证书是配合着协议去使用。

1.4 https的单向认证流程 

(1)服务端通过CA获取服务端的证书和私钥文件

(2)客户端通过https访问服务端的443号端口

(3) 服务端发送包括证书有效期、公钥、CA信息的证书给客户端

(4)客户端收到后会先通过本地的CA证书验证服务端证书的有效期,验证通过会随机生成一个会话密钥并通过服务端公钥加密然后发送给服务端,验证失败会提示告警。

(5)服务端收到后会利用自己的私钥解密后获得会话密钥,并将回复的报文通过会话密钥加密发送给给客户端

(6)客户端收到利用会话密钥解密获取恢复的数据,之后客户端和服务端就可以通过会话密钥进行密文传输

该过程中,服务端在获取到会话密钥时,证书中产生的公钥私钥进行会话密钥获取的方式为非对称密钥方式。之后客户端服务端建立起了会话私钥进行交流的方式为对称密钥方式。

1.5 https的双向认证流程 

0)服务端和客户端会事先通过CA签发服务端证书和私钥文件
1)客户端发送https请求到服务端的443端口
2)服务端会先返回一个包含公钥、证书有效期、CA机构等信息的证书给客户端
3)客户端收到服务端发来的证书后,会先用本地的CA证书校验服务端证书的有效性,如果证书有效,再将包含公钥的客户端证书发送给服务端
4)服务端收到客户端证书后也会校验证书的有效性,客户端还会发送自己可支持的对称加密方案给服务端
5)服务端会选择加密程度最高的方案,并通过客户端证书里的公钥加密后发送给客户端
6)客户端使用私钥解密获取选择的加密方案,并使用此加密方案生成随机会话密钥,再通过服务端证书中的公钥进行加密,再发送给服务端
7)服务端会用私钥进行解密获取客户端发来的随机会话密钥,并使用这个会话密钥加密要返回的报文,再发送给客户端
8)客户端也是这个会话密钥进行解密获取服务端返回的数据,之后双方可继续这个会话密钥进行加密和解密来实现密文通信

1.6 客户端是如何验证证书是否有效 

  1. 浏览器一般会预安装一些比较权威的第三方认证机构的公钥,比如VeriSign、Symantec以及GlobalSign等等。

  2. 验证数字签名的时候,会直接从本地拿到相应的第三方的公钥,对私钥加密后的数字签名进行解密得到真正的签名。

  3. 然后客户端利用签名生成规则进行签名生成,看两个签名是否匹配,如果匹配认证通过,不匹配则获取证书失败。

1.7 web网站并未全部采用https的原因

  1. 首先,很多人还是会觉得HTTPS实施有门槛,这个门槛在于需要权威CA颁发的SSL证书。从证书的选择、购买到部署,传统的模式下都会比较耗时耗力。

  2. 其次,HTTPS普遍认为性能消耗要大于HTTP,因为与纯文本通信相比,加密通信会消耗更多的CPU及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定也会随之减少。

  3. 除此之外,想要节约购买证书的开销也是原因之一。要进行HTTPS通信,证书是必不可少的。而使用的证书必须向认证机构(CA)购买。

  4. 最后是安全意识别。相比国内,国外互联网行业的安全意识和技术应用相对成熟,HTTPS部署趋势是由社会、企业、政府共同去推动的。

二、证书的获取方式

如何获取证书?

1)在阿里云、华为云、腾讯云等云服务商那里申请一年有效期的免费证书或者购买证书
2)在本地使用 openssl、mkcert、cfssl、certbot(Let's Encrypt)的工具生成本地私钥证书

 2.1 阿里云证书获取

官方帮助文档:https://help.aliyun.com/document_detail/188316.htm?spm=5176.b657008.help.dexternal.40d51b48wYs5Xk

2.2 mkcert证书获取 

cd ~
mkdir mkcertmv mkcert-v1.4.4-linux-amd64  mkcertmv mkcert  /usr/local/bin/
chmod +x /usr/local/bin/mkcertmkcert cxk.com

 

2.3 openssl证书获取

 (1)创建ca私钥
//首先创建一个存放目录
mkdir /openssl
cd /openssl///生成ca证书openssl genrsa -aes256 -out xhz.key 4096			#输入123123
----------------------------------------------------------------------------------------------------------
genrsa:使用RSA算法产生私钥
-aes256:使用256位密钥的AES算法对私钥进行加密,这样每次使用私钥文件都将输入密码,可省略
-out:输出文件的路径,若未指定输出文件,则为标准输出
4096:指定私钥长度,默认为1024。该项必须为命令行的最后一项参数
----------------------------------------------------------------------------------------------------------

(2)创建ca证书  
openssl req -new -x509 -days 1000 -key xhz.key -sha256 -subj "/CN=*" -out ca.pem			#输入123123
----------------------------------------------------------------------------------------------------------
req:执行证书签发命令
-new:新证书签发请求
-x509:生成x509格式证书,专用于创建私有CA时使用
-days:证书的有效时长,单位是天
-key:指定私钥路径
-sha256:证书摘要采用sha256算法
-subj:证书相关的用户信息(subject的缩写)
-out:输出文件的路径
----------------------------------------------------------------------------------------------------------

 

(3)创建服务器私钥  
//用 ca 证书签发 server 端证书
openssl genrsa -out server-key.pem 4096

(4)生成证书签名请求文件(csr文件) 
openssl req -new -key server.key -out server.csr

(5)使用ca 证书与私钥证书签发服务端签名证书  
#该过程需要输入密码 123123,(需要签名请求文件,ca 证书,ca 密钥)openssl x509 -req -days 36500 -in server.csr -CA xhz.pem -CAkey xhz.key -CAcreateserial -out server.pem
----------------------------------------------------------------------------------------------------------
x509:生成x509格式证书
-req:输入csr文件
-in:要输入的csr文件
-CA:指定ca证书的路径
-CAkey:指定ca证书的私钥路径
-CAcreateserial:表示创建证书序列号文件,创建的序列号文件默认名称为ca.srl
----------------------------------------------------------------------------------------------------------

 客户端的操作和服务端一样

 (6)生成客户端私钥 
//用ca证证书签发client端证书
openssl genrsa -out client-key.pem 4096

(7)生成证书签名请求文件  
openssl req -new -key client-key.pem  -out client.csr

(8)创建扩展配置文件,使秘钥适合客户端身份验证  
echo extendedKeyUsage=clientAuth > extfile.cnf

(9)使用 ca 证书签发客户端签名证书  
输入 123123,(需要签名请求文件,ca 证书,ca 密钥)
openssl x509 -req -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -extfile extfile.cnf -days 1000 -out client-cert.pem 

三、nginx 支持 https

1)编译安装时需要添加 --with-http_ssl_module 模块
2)修改配置文件,添加 ssl 配置

http {
    server {
        listen   443 ssl;                 #SSL访问端口号为 443
        server_name  域名;                #指定绑定证书的域名

        ssl_certificate     /usr/local/nginx/conf/cert/xxxxx.pem;        #指定服务端证书文件路径
        ssl_certificate_key  /usr/local/nginx/conf/cert/xxxxx.key;       #指定服务端私钥文件路径

        # ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;                  #指定SSL服务器端支持的协议版本
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

yum -y install nginx
vim /etc/nginx/conf.d/default.confserver {#listen       80;listen       443 ssl;server_name  clx.com;#access_log  /var/log/nginx/host.access.log  main;ssl_certificate       /root/openssl/server.pem;ssl_certificate_key   /root/openssl/server.key;ssl_session_timeout  5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers  on;location / {root   /usr/share/nginx/html;index  index.html index.htm;}systemctl  restart nginx

 

 

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

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

相关文章

基于微服务的高考志愿智能辅助决策系统(附源码)

目录 一.引言 1、编写目的 2、系统功能概述 二.功能分析 三.微服务模块 1、微服务用户相关模块 (1)用户注册 (2)用户登录 (3)用户信息管理 (4)用户操作 2、微服务文件云存…

React Router 完美教程(下)

我们书接上回,继续我们的React Router 路由之路: 我们到目前为止都没有用到 state、useEffect、redux等状态管理器。但也达到了我们的设计目的。 注意,action 返回的结果 可以在组件中使用 useActionData() 来获取。就像 useLoaderData() 的使…

MD5算法:高效安全的数据完整性保障

摘要:在数字世界中,确保数据完整性和安全性至关重要。消息摘要算法就是一种用于实现这一目标的常用技术。其中,Message Digest Algorithm 5(MD5)算法因其高效性和安全性而受到广泛关注。本文将详细介绍MD5算法的优缺点…

web应用课——(第四讲:中期项目——拳皇)

代码AC Git地址:拳皇——AC Git链接

87 SpringMVC 上传文件在业务代码中拿不到文件数据

前言 呵呵 最近在整理文件上传部分的东西的时候, 发现了一个问题 文件上传部分 有一些基础的问题, 可以参见 29 SpringMVC 上传文件未生成临时文件, 我们这里上传的文件的大小是 大于 sizeThreshold 的 SpringMVC 上传文件的时候会生成一个临时文件, 我想直接使用这个临时…

【开源】SpringBoot框架开发海南旅游景点推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户端2.2 管理员端 三、系统展示四、核心代码4.1 随机景点推荐4.2 景点评价4.3 协同推荐算法4.4 网站登录4.5 查询景点美食 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的海南旅游推荐系统&#xff…

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏5(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言修改鼠标光标和中心提示图鼠标光标素材修改默认鼠标光标修改中心提示图 拾取提示弹窗简单绘制UI拾取弹窗功能 源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使…

canvas的一些基础

在 Canvas 中,基本图形有两种:直线图形和曲线图形 直线图形:直线、矩形(描边矩形和填充矩形)、多边形 曲线图形:曲线和弧线(弧线是圆的一部分,曲线则不一定,弧线上的每个点都具有相同的曲率&…

十分钟快速上手Spring Boot与微信小程序API接口的调用,快速开发小程序后端服务

1.1 微信小程序API接口介绍 微信小程序API接口是连接小程序前端与后端服务器的桥梁,它提供了丰富的功能接口,包括用户信息、支付、模板消息、数据存储等。这些API接口能够满足开发者在小程序中实现各种复杂业务逻辑的需求。 用户信息接口 用户信息接口…

计算机服务器中了locked勒索病毒怎么办,locked勒索病毒解密流程

随着网络技术在企业生产生活中的应用,越来越多的企业开始走向数字化办公模式,极大地提升了企业办公与生产效率,而其中的企业数据起到了关键性作用,企业的数据安全是众多企业关心的话题。但网络是一把双刃剑,近期&#…

【C++】开源:Windows图形库EasyX配置与使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Windows图形库EasyX配置与使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下&#…

【 USRP 相控阵】ADAR1000 : 4 通道 X 频段和 Ku 频段波束形成器,8 GHz 至 16 GHz

介绍 ADAR1000 是一款适用于相控阵的 4 通道 X 和 Ku 频段波束形成内核芯片。此器件在接收和发射模式之间以半双工状态工作。在接收模式下,输入信号通过四个接收通道后在公共 RF_IO 引脚上组合在一起。在发射模式下,RF_IO 输入信号拆分后通过四个发射通…

智慧食堂预点餐管理系统-计算机毕业设计源码48846

摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,餐饮业当然也不例外。智慧食堂预点餐管理系统小程序是以实际运用为开发背景,运用软件工程原理和开发方法&…

回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小支持向量机的数据多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于OOA-LSSVM鱼鹰算法优化最小…

C++关键词auto详解

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、小思考 随着我们对于C的不断学习,遇到的程序越来越复杂,程序中用到的类型也越来越复杂…

java接口练习

首先,明确:接口可以提供模糊的方法,方案;那么具体的实现需要另外创建实现类去实现; 另外:明确接口的特点:接口回调,接口的多态性; 具体解释: 接口的特点&a…

转转基于MQ的分布式重试框架设计方案

文章目录 1 背景2 方案3 效果4 可选项5 注意事项6 总结 1 背景 在分布式场景下,为了保障系统的可用性和数据的最终一致性,采用基于消息队列(MQ)的重试机制是一种常见的解决方案。伪代码如下: /*** 需要保证最终一致性…

phpstudy安装并运行redis

对于一个菜鸟来说,任何一个小步骤都可能研究半天,比如“phpstudy安装并运行redis”这一问题,解决好后第一时间记录下来,方便日后查看,也为遇到同样困难的小伙伴提供个参考! 一、phpstudy安装redis 1.打开…

打车代驾APP小程序开发功能有哪些?

随着移动互联网的快速发展,越来越多的人开始使用网约车服务。开发一个网约车、打车、叫车系统已经成为了市场的热门需求。 随着城市化进程的加速和人们出行方式的多样化,传统的公共交通方式已经无法满足人们的出行需求。同时,私家车拥有成本也…

【计算机视觉】万字长文详解:卷积神经网络

以下部分文字资料整合于网络,本文仅供自己学习用! 一、计算机视觉概述 如果输入层和隐藏层和之前一样都是采用全连接网络,参数过多会导致过拟合问题,其次这么多的参数存储下来对计算机的内存要求也是很高的 解决这一问题&#x…