网络-HTTPS


文章目录

  • 前言
  • 一、HTTPS
    • 简介
    • 优点
    • SSL/TSL
      • 工作流程
    • 加密
      • 1、对称加密
      • 2、非对称加密
  • 二、使用HTTPS
    • 1.openSSL生成私钥
      • (1)node服务端
      • (2)nginx配置https服务(前端)
    • nginx服务
  • 总结


前言

Http 存在不安全、无状态、性能低、可伪造等问题,为了解决Http的这些缺点,发展出了HTTPS协议,它在HTTP的基础上增加了安全性,通过使用SSL/TLS协议对数据进行加密和认证,提供了更安全的数据传输方式。


一、HTTPS

简介

HTTPS(Hypertext Transfer Protocol Secure)是一种基于HTTP协议的安全传输协议。它通过使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议对数据进行加密和认证,提供了更安全的数据传输方式。

HTTPS = HTTP + SSL/TLS

优点

  • 安全性:
    HTTPS使用SSL/TLS协议对数据进行加密和认证,防止数据被窃听和篡改,提供了更安全的数据传输方式。
  • 身份验证:
    HTTPS使用数字证书对服务器进行身份验证,确保客户端与服务器之间的通信是安全可信的。
  • 数据完整性:
    HTTPS使用消息摘要算法对数据进行校验,确保数据在传输过程中没有被篡改。
  • SEO优化:
    搜索引擎更倾向于显示使用HTTPS的网站,因此使用HTTPS可以提升网站的搜索排名。

尽管HTTPS提供了更安全的数据传输方式,但它也会增加服务器的负载和网络延迟,因为加密和解密数据需要额外的计算资源。

SSL/TSL

SSL(Secure Sockets Layer)是一种用于保护网络通信安全的协议。它位于传输层和应用层之间,为应用层协议(如HTTP、SMTP、FTP等)提供安全性支持。
OSI、TCP

SSL的主要功能包括以下几个方面:

  • 加密:SSL使用对称加密和非对称加密相结合的方式,对传输的数据进行加密,防止数据在传输过程中被窃听和篡改。
  • 身份验证:SSL使用数字证书对通信双方进行身份验证,确保通信的双方是合法的,并防止中间人攻击。
  • 数据完整性:SSL使用消息摘要算法对数据进行校验,确保数据在传输过程中没有被篡改。
  • 会话管理:SSL使用会话标识和会话密钥来管理通信会话,提供持久的连接和快速重连的功能。

工作流程

  1. 客户端向服务器发起SSL连接请求。
  2. 服务器返回自己的数字证书给客户端。
  3. 客户端验证服务器的证书的合法性和有效性。
  4. 客户端生成一个随机的对称密钥,并使用服务器的公钥进行加密,发送给服务器。
  5. 服务器使用自己的私钥解密客户端发送的对称密钥。
  6. 服务器和客户端之间的通信会使用对称密钥进行加密和解密。

TLS是SSL的升级版,进行了一些改进和优化,广泛使用的是TLS,如今他的版本已经来到1.3了。

加密

1、对称加密

发送和接收使用相同的密钥来对数据进行加密和解密,这样被称为对称加密。

具体流程:

  1. 发送方使用密钥将明文数据加密成密文。
  2. 发送方将密文发送给接收方。
  3. 接收方使用相同的密钥对密文进行解密,还原成明文数据

常见的对称加密算法有:

  • DES(Data Encryption Standard):是一种使用56位密钥的对称加密算法,已经被认为不够安全,现在很少使用。
  • 3DES(Triple Data Encryption Standard):是对DES算法的改进,使用3个56位密钥进行加密,提供更高的安全性。
  • AES(Advanced Encryption Standard):是一种使用128位、192位或256位密钥的对称加密算法,目前被广泛使用,被认为是安全可靠的加密算法。

2、非对称加密

非对称加密使用一对密钥(公钥和私钥)来进行加密和解密。在非对称加密中,公钥用于加密数据,而私钥用于解密数据。

具体流程:

  1. 发送方使用接收方的公钥将明文数据加密成密文。
  2. 发送方将密文发送给接收方。
  3. 接收方使用自己的私钥对密文进行解密,还原成明文数据。

非对称加密算法有:

  • RSA(Rivest-Shamir-Adleman):是一种基于大数分解的非对称加密算法,广泛应用于数字签名、身份验证和密钥交换等领域。
  • ECC(Elliptic Curve Cryptography):是一种基于椭圆曲线数学问题的非对称加密算法,具有相同安全性的情况下,使用更短的密钥长度,提供更高的性能和效率

二、使用HTTPS

1.openSSL生成私钥

  • openSSL工具的安装
    下载地址:openSSL

    • 在系统变量Path中添加环境变量
      openSSL环境变量
    • 验证是否安装成功,命令窗口输入openssl version
      验证安装
  • 证书相关操作
    这里需要三个文件来完成证书相关操作:

    • 私钥文件(private-key.pem),用于对加密数据进行解密。
    • 证书签名请求文件(certificate.csr),用于向CA申请SSL/TLS证书签名,包含了请求者身份信息和公钥信息等,需要发送给CA进行签名,获取有效的SSL/TLS证书
    • SSL/TLS证书文件(certificate.pem),用于对客户端发送请求进行验证,确保通讯安全。包含了签名后的证书信息,用作身份验证。

    SSL/TLS证书文件一般使用第三方(阿里云、华为云、腾讯云)提供的SSL/TLS证书,这里用openssl模拟了,这会使当前访问地址不安全,因为这里生成的证书没有被受信
    SSL/TLS证书

(1)node服务端

生成私钥文件:

openssl genpkey -algorithm RSA -out private-key.pem -aes256
  • openssl: OpenSSL 命令行工具的名称。
  • genpkey: 生成私钥的命令。
  • -algorithm RSA: 指定生成 RSA 私钥。
  • -out private-key.pem: 将生成的私钥保存为 private-key.pem 文件。
  • -aes256: 为私钥添加 AES 256 位加密,以保护私钥文件不被未经授权的人访问。

在之后需要一个密码短语并确认,在后续需要操作密钥文件的时候需要。

Enter PEM pass phrase: 123456 
Verifying - Enter PEM pass phrase: 123456

生成私钥文件


生成证书签名请求文件:

openssl req -new -key private-key.pem -out certificate.csr
  • “req”: 表示使用 X.509 证书请求管理器 (Certificate Request Management) 功能模块。
  • “-new”: 表示生成新的证书签名请求。
  • “-key private-key.pem”: 表示使用指定的私钥文件 “private-key.pem” 来加密证书签名请求中的密钥对。
  • “-out certificate.csr”: 表示输出生成的证书签名请求到文件 “certificate.csr” 中。该文件中包含了申请者提供的一些证书请求信息,例如公钥、授权主体的身份信息等。

填写信息:

Country Name (2 letter code) []:CN 国家
State or Province Name (full name) []:CQ 省份
Locality Name (eg, city) []:CQ 城市
Organization Name (eg, company)SMZ 组织或者是个人
Organizational Unit Name (eg, section) []:Min 机构名称
Common Name (eg, fully qualified host name) []:localhost 域名
Email Address []: 邮箱地址
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: SMZSMZSMZSMZ 密码加盐
An optional company name []:Min 公司名称

生成证书签名请求文件


生成SSL/TLS证书文件:

openssl x509 -req -in certificate.csr -signkey private-key.pem -out certificate.pem
  • “x509”: 表示使用 X.509 证书管理器功能模块。
  • “-req”: 表示从输入文件(这里为 “certificate.csr”)中读取证书签名请求数据。
  • “-in certificate.csr”: 指定要读取的证书签名请求文件名。
  • “-signkey private-key.pem”: 指定使用指定的私钥文件 “private-key.pem” 来进行签名操作。一般情况下,签名证书的私钥应该是和之前生成 CSR 的私钥对应的。
  • “-out certificate.pem”: 表示将签名后的证书输出到文件 “certificate.pem” 中。该文件中包含了签名后的证书信息,包括签名算法、有效期、公钥、授权主体的身份信息等。
  • Enter pass phrase for private-key.pem: 密码短语

生成SSL/TLS证书文件
文件

Https端口默认为443,配置好密钥和证书以及密码短语就可以启动服务了

const https = require('https')
const fs = require('node:fs')
// http端口默认80 , https端口默认443
https.createServer({key:fs.readFileSync('private-key.pem'),cert:fs.readFileSync('certificate.pem'),//密码短语passphrase: '123456'
},(req,res)=>{res.writeHead(200)res.end('success')
}).listen(443,()=>{console.log('https server is running at https://localhost:443')
})

node服务https

(2)nginx配置https服务(前端)

在nginx文件下的conf中nginx.conf配置文件中修改配置。

nginx

找到https相关配置部分,niginx已经将配置写好了的,只需要调整。

  • openssl genrsa -out nginx.key 2048 (生成私钥)
  • openssl req -new -key nginx.key -out nginx.csr(生成签名文件)
  • openssl x509 -req -in nginx.csr -signkey nginx.key -out nginx.crt(生成证书)

生成过程和上面的步骤差不多,只不过没有了密码短语。

    # HTTPS server#server {listen       443 ssl;server_name  localhost;ssl_certificate      nginx.crt;ssl_certificate_key  nginx.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;location / {root   html;index  index.html index.htm;}}

nginx生成文件

之后启动nginx服务,就可以访问了。

nginx服务

总结

总之,HTTPS是一种重要的安全传输协议,可以提供更安全的数据传输方式。在保护敏感信息和建立可信任的通信时,使用HTTPS是一个值得推荐的选择。

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

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

相关文章

[数据结构]——单链表超详细总结

带你走进链表的世界 目录:一、线性表的概念二、顺序表三、链表3.1 链表的概念3.2 链表的分类3.3 无头单向非循环链表的实现3.4 带头双向循环链表的实现 四、顺序表和链表的区别和联系 目录: 链表是个优秀的结构,没有容量概念,可以…

基于PHP的芒果销售交易平台

有需要请加文章底部Q哦 可远程调试 基于PHP的芒果销售交易平台 一 介绍 芒果销售交易平台基于原生PHP开发,数据库mysql,前端bootstrap。用户可注册登录,购物下单,评论等。管理员登录后台可对芒果,用户,订…

解决win10因为WSL问题无法正常启动docker

解决win10无法成功启动dockerdesktop因为WSL问题无法启动 问题起因解决方法 问题起因 因为需要在windows复现一个CVE漏洞,就需要安装在WIN10上装docker,但是在启动的时候出现下面报错。 然后查了一下是因为WSL的版本太低了。更新以后发现打开docker仍然…

【PyTorch2 之027】在 PyTorch 中的R-CNN、Fast R-CNN和 Faster R-CNN

一、说明 亮点:对象检测是计算机视觉中最重要的任务之一。在这篇文章中,我们将概述最有影响力的对象检测算法家族之一:R-CNN、Fast R-CNN 和 Faster R-CNN。我们将重点介绍它们中的每一个的主要新颖性和改进。 最后,我们将专注于 …

【SOA-KELM分类】基于海鸥算法优化核极限学习机分类研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【C/C++数据结构 - 2】:稳定性与优化揭秘,揭开插入排序、希尔排序和快速排序的神秘面纱!

文章目录 排序的稳定性插入排序插入排序的优化 希尔排序快速排序 排序的稳定性 稳定排序:排序前2个相等的数在序列中的前后位置顺序和排序后它们2个的前后位置顺序相同。(比如:冒泡、插入、基数、归并) 非稳定排序:排…

商品API接口优秀案例 │ 国家电网办公物资电商化采购项目API解决方案

苏宁易购集团股份有限公司(以下简称“苏宁”)作为中国领先的O2O智慧零售商,在互联网、物联网、大数据盛行的时代,持续推进智慧零售和线上线下融合战略,全品类经营,全渠道运营,开放苏宁物流云、数…

video_topic

使用qt5,ffmpeg6.0,opencv,os2来实现。qt并非必要,只是用惯了。 步骤是: 1.读取rtsp码流,转换成mat图像 2.发送ros::mat图像 项目结构如下: videoplayer.h #ifndef VIDEOPLAYER_H #define VIDEOPLAYER_H#include …

机器学习笔记 - 车道检测的几种深度学习方法

一、简述 人们在打造自动驾驶汽车时首先想到的就是实现车道检测。这是 Tesla 和 mobileye 所说的“强制性”任务,也是 Sebastian Thrun(自动驾驶汽车教父)在接受采访时所说的首要任务。 这个方向有很多传统的 OpenCV 算法,这些算法由不再使用的非常旧的函数组成。目前全部都…

LabVIEW玩转魔方

LabVIEW玩转魔方 使用LabVIEW创建一个3D魔方,并找出解谜题的秘密,给朋友留下深刻深刻的印象。游戏中内置的机制使每张脸都能独立转动,从而混合颜色。要解决难题,每个面必须是相同的纯色 魔方的奥秘在于它的简单性和不可解性。这是…

基于springboot实现音乐网站与分享平台项目【项目源码+论文说明】

摘要 本论文主要论述了如何使用JAVA语言开发一个音乐网站与分享平台 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述音乐网站与分享平台的当前背景以及系统开…

Python 人工智能 Machine Learning 机器学习基础知识点详细教程(更新中)

Artificial Intelligence 人工智能基本介绍 人工智能(Artificial Intelligence,AI)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。它试图了解智能的实质,并生产出一种新的能以人类智…

VMware使用ubuntu安装增强功能实现自动缩放

VMware使用ubuntu安装增强功能实现自动缩放 1.下载 VMware Tools2.安装tool 1.下载 VMware Tools 1.需要先弹出DVD 2.虚拟机-安装VMware Tools 进入终端 3.把media下的VMware压缩包拷贝到home/下 4.去home下解压 2.安装tool 进入vmware-tools-distrib sudo ./vmware-ins…

微信小程序备案内容常见问题汇总

一、备案时间点 自2023年09月01日起,新的微信小程序,必须备案后才能上架; 在2024年03月31日前,所有小程序都必须完成备案; 于2024年04月01日起,对未备案小程序进行清退处理。 微信小程序备案系统已于9月4日上线。 二、备案流程 [找备案入口]–[填主体信息]–[填小程…

QE01/QA11/QA02屏幕增强

1、业务需求 需要对来料检验增加“合格数量”和“不合格数量”字段,涉及三个增强开发 2、QE01\QE02\QE03\QE51N屏幕增强 增强表 增强点BADI:QEEM_SUBSCREEN_5000 创建程序,包含子屏幕,在增强点中调用 在程序屏幕中绘制字段 在输…

asp.net售后维修管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 售后维修管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语 言开发 asp.net售后维修管理系统1 二、…

python openai playground使用教程

文章目录 playground介绍Playground特点模型设置和参数选择四种语言模型介绍 playground应用构建自己的playground应用playground python使用 playground介绍 OpenAI Playground是一个基于Web的工具,旨在帮助开发人员测试和尝试OpenAI的语言模型,如GPT-…

【大数据】Apache Hive数仓(学习笔记)

一、数据仓库基础概念 1、数仓概述 数据仓库(数仓、DW):一个用于存储、分析、报告的数据系统。 OLAP(联机分析处理)系统:面向分析、支持分析的系统。 数据仓库的目的:构建面向分析的集成化数据…

9、Docker 安装 Redis

1、下载镜像 docker pull redis:3.2.10 2、本机创建redis目录并修改配置文件 1)创建目录 mkdir /usr/local/redis 2)进入redis目录 cd /usr/local/redis 3)创建data目录 mkdir data 4)创建redis.conf文件 vi redis.conf 5&a…

网站的搭建与应用|企业APP软件定制开发|小程序

网站的搭建与应用|企业APP软件定制开发|小程序 网站是一种数字化媒体,它可以将我们的信息传递给全球的用户,让更多的人了解我们、了解我们的产品和服务。那么,如何搭建一个网站呢?下面,我将为大家介绍一下网站的建设步…