服务器证书、数字证书和加解密算法

news2025/1/14 21:32:30

背景:

项目上需要对接外部银行,涉及到服务器、数字证书、加解密算法等方面的内容,结合开发经历,做一个总结分享。

整体流程可以概括为:依次搞定服务器证书、企业证书,申请加解密的密钥,按照报文协议、加解密算法对接。

SSL/TLS 和服务器证书的重要性

在现代互联网通信中,SSL/TLS协议和服务器证书是确保数据传输安全的重要工具。它们能够有效防止数据在客户端和服务器之间的传输过程中被窃听、篡改或伪造,保护通信的隐私性和完整性。

1. SSL/TLS 协议概述

SSL(Secure Sockets Layer)和其后继者TLS(Transport Layer Security)是广泛使用的网络安全协议,主要用于:

  • 数据加密:确保数据传输的隐私性。

  • 身份认证:验证通信双方的身份。

  • 数据完整性:防止数据被篡改。

随着TLS的发展,目前TLS 1.3成为主流协议,提供更高的安全性和更简洁的握手流程。

2. SSL/TLS 握手过程

在SSL/TLS握手过程中,客户端和服务器会进行一系列的信息交换,以协商加密算法、生成密钥等。这个过程通常包括以下步骤:

  • 客户端发起连接:客户端向服务器发送一个“hello”消息,包含客户端支持的SSL/TLS版本和加密套件。

  • 服务器响应:服务器回应一个“hello”消息,选择一个加密套件,并发送其证书。

  • 客户端验证证书:客户端验证服务器的证书,确保其有效性和可信度。

  • 密钥交换:使用选定的加密算法(如RSA、ECDHE等),客户端和服务器交换密钥材料,生成会话密钥。

  • 加密通信:使用会话密钥,客户端和服务器开始加密通信。

3. SSL/TLS 的常用算法

SSL/TLS协议结合了多种密码学算法,为安全通信提供全面保障。

3.1 对称加密算法

  • AES(高级加密标准):支持多种密钥长度(128位、192位、256位),性能与安全性优异。

  • ChaCha20:一种高效且安全的对称加密算法,特别适合移动设备。

3.2 非对称加密算法

  • RSA:传统的公钥加密算法,广泛用于数字证书和密钥交换。

  • ECC(椭圆曲线密码学):相比RSA,提供同等安全性的同时密钥更短,效率更高。

3.3 哈希算法

  • SHA-256:确保数据完整性,广泛用于数字签名。

3.4 密钥交换算法

  • ECDHE:基于椭圆曲线的密钥交换协议,支持前向安全性。

4. 服务器证书

4.1 定义

服务器证书是一种用于加密通信的安全凭证,用于验证服务器身份并确保与客户端之间的通信是受保护的。它是由权威的证书颁发机构(CA)或者自签名证书来签发的,其中包含了服务器的公钥以及与该公钥相关联的标识信息。

4.2 作用

HTTPS 中的“S” 指的是“Secure(安全)”,它代表着在 HTTP 协议之上使用了 SSL/TLS 加密通信。而服务器证书则是用于建立安全通信的重要组成部分。

在建立 HTTPS 连接时,客户端和服务器之间的通信将会通过 SSL/TLS 加密来保护数据的安全性。而服务器证书则是用于验证服务器身份,并协商加密参数的一种机制。当客户端发起连接请求时,服务器会将自己的证书发送给客户端,客户端通过验证服务器证书的合法性,确认连接的目标身份,并且利用服务器证书中的公钥来建立安全通信所需的加密参数。

4.3 申请和颁发流程

  • 根据自身信息,生成证书DN: CN=117.xx.xx.xxx,OU=SSL-RSA,O=公司名称xx,L=Beijing,ST=Beijing,C=CN

  • 通过以上证书DN, 使用OpenSSL 等工具生成CSR(P10)证书

  • 填写《服务器证书申请表》,邮件向CFCA提交申请

  • CFCA 收到申请表后,向参与机构经办人发送“序列号” 和“授权码”(两码)

  • 参与机构收到两码后,登录 CFCA 数字证书下载平台,申请并下载 SSL 证书

  • 将核实通过的 SSL 证书公钥导入 SSL 设备,完成服务器证书配置

名词解释:

什么是DN?

DN(Distinguished Name)证书 中用来唯一标识实体(如个人、组织、设备等)的 名字。它是 X.500 标准的一部分,并广泛应用于 X.509证书 中,作为标识主体(Subject)和颁发者(Issuer)的方式。DN 是证书中一个非常重要的部分,用于区分不同的证书持有者。

DN 是由一系列 属性-值对 组成的,通常使用 逗号 分隔。每个属性代表一个标识符,而值则是该标识符的具体值。常见的属性和它们的值包括:

  1. CN(Common Name):常见名称,通常指的是证书持有者的名字或设备的名称。例如,网站的域名 www.example.com

  2. O(Organization):组织,证书持有者所属的公司或组织的名称。例如,Example Inc.

  3. OU(Organizational Unit):组织单位,指的是组织内部的部门或单位。例如,IT Department

  4. L(Locality):位置,通常是城市的名称。例如,Beijing

  5. ST(State):省份或州。例如,Beijing

  6. C(Country):国家,使用两字母国家代码表示。例如,CN 表示中国。

  7. E(Email):电子邮件地址,证书持有者的电子邮件地址(在某些证书中可能包含)。

什么是P10证书?

P10证书实际上指的是 PKCS#10 格式的证书请求文件。PKCS#10(Public Key Cryptography Standards #10)是一个标准,定义了 公钥证书请求(Certificate Request) 的格式。它并不是一个已经签发的证书,而是一个用于向证书颁发机构(CA)申请证书的请求文件。

5. 总结

SSL/TLS协议和服务器证书是确保网络安全通信的关键技术。通过使用适当的加密算法和密钥交换机制,可以保护数据的隐私和完整性,防止数据在传输过程中被截获或篡改。

国密算法

国密算法,全称为国家密码管理局认定的国产密码算法,是一套由中国自主研发的密码技术标准,包括了对称加密算法、非对称加密算法以及杂凑算法等多种算法。具体包括了SM1、SM2、SM3、SM4等算法 。

优点

  1. 安全性更高:国密算法如SM2提供了与RSA相当的安全级别但所需密钥长度更短,从而提供更高的安全性和更小的计算开销 。

  2. 效率更高:SM2算法的加密和解密速度通常比RSA快,适合于高并发场景 。

  3. 国产自主:国密算法是我国自主设计的密码算法,符合国家密码管理政策,有利于保障国家信息安全 。

  4. 算法公开:部分国密算法如SM2、SM3、SM4等是公开的,便于国内外研究者进行研究和应用 。

需注意的点

尽管国密算法具有上述优点,但在某些情况下仍然可能选择使用国际算法,原因可能包括:

  1. 国际通用性:国际算法如RSA、AES等在全球范围内得到了广泛的应用和认可,对于一些需要跨国合作或国际标准化的场景,可能会优先选择使用国际算法。

  2. 成熟度和生态:国际算法由于存在时间较长,拥有成熟的生态系统和广泛的硬件、软件支持。

  3. 兼容性:现有的许多系统和设备可能已经基于国际算法构建,使用国密算法可能需要进行额外的适配或升级工作。

SM2withSM3

SM2withSM3算法结合了SM2椭圆曲线公钥密码算法和SM3密码哈希算法,主要用于提供数字签名、密钥交换和数据加密等功能,同时确保数据的安全性和完整性。

SM2(非对称加密)

SM2是一种基于椭圆曲线密码(ECC)的非对称加密算法,其安全性基于椭圆曲线离散对数难题。它包括数字签名算法(SM2-1)、密钥交换协议(SM2-2)和公钥加密算法(SM2-3)。SM2算法推荐了一条256位的曲线作为标准曲线,其性能通常快于RSA算法,且在相同的安全强度下,所需的密钥长度更短 。

加解密

1. 密钥生成:

首先生成一对密钥,包括私钥和公钥。私钥必须保密,而公钥可以公开分享 。

2. 加密过程:

使用公钥加密:文本信息通过公钥加密,转换为密文。

加密数据通常转换为特定格式(如Base64编码)以便于存储和传输 。

3. 解密过程:

使用私钥解密:接收方使用私钥对密文进行解密,恢复原始信息。

解密过程需要确保私钥的安全性 。

SM3(哈希算法、杂凑算法)

SM3是一种密码哈希算法,适用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成。它对输入长度小于2的64次方的比特消息,生成长度为256比特的哈希值。SM3算法的安全性要高于MD5算法和SHA-1算法,因为它的输出长度更长,且设计更为复杂

签名验签

1. 签名过程:

发送方使用自己的私钥对数据(或数据的哈希值-SM3)进行加密,生成数字签名。

签名随数据一起发送给接收方 。

  • 流程:

数据 → [杂凑算法] → 摘要值

→ [私钥加密] → 签名值

→ 数据 + 签名值 → 发送给接收方

2. 验签过程:

接收方使用发送方的公钥对签名进行解密。

如果解密结果与原始数据的哈希值匹配,则验证成功,证明数据未被篡改且确实来自声称的发送者 。

  • 流程:

接收方接收 (数据 + 签名值)

→ [杂凑算法] → 重新计算摘要值

→ [公钥解密签名值] → 解密摘要值

→ 比较两个摘要值 → 验证结果

总结:

私钥:签名、解密

公钥:验签、加密

  • tips:

    • 平台给我们提供密钥时,一般不会直接提供密钥明文,而是提供一个密钥文件,需要用对应的解密方法解密,才能得到正在的密钥。

SM4(对称加密)

SM4是中国国家密码管理局推出的一种对称加密算法,它是一种基于字节的块加密算法,加密和解密过程相同,都是将数据块作为操作单元进行处理。

加解密

1. 密钥生成

密钥长度固定为128位,保证了足够的安全性;将密钥提供给接收方

2. 加密

发送方使用密钥对数据进行加密

3. 解密

接收方使用相同密钥对数据解密

数字信封

数字信封是一种结合了对称加密和非对称加密的加密技术,用于安全地传输数据。

其核心思想是使用非对称加密来保护对称加密的密钥,然后使用这个对称密钥来加密实际的数据。这种方法结合了两种加密方式的优点,提高了数据传输的安全性和效率。

既然已经用了SM2非对称加密,为什么不直接使用SM2加密传输的数据,反而使用SM4加密数据,然后又使用SM2加密SM4的密钥,使步骤更繁琐呢?

主要还是出于性能方面的考虑。

SM4是一种对称加密算法,其加密和解密速度快,适合大量数据的快速处理。

SM2是一种非对称加密算法,其加密和解密过程相对较慢,特别是当数据量较大时,性能比对称加密差。

使用SM4对称加密来保护数据,并将对称密钥通过SM2非对称加密作为数字信封传递,是一种平衡了安全性、性能和灵活性的解决方案。这种方式既利用了对称加密的高效率来处理大量数据,又利用了非对称加密的安全性来保护密钥的传输。这种组合方法在实际应用中被广泛采用,以确保数据传输的安全性和效率。

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

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

相关文章

浅谈云计算02 | 云计算模式的演进

云计算计算模式的演进 一、云计算计算模式的起源追溯1.2 个人计算机与桌面计算 二、云计算计算模式的发展阶段2.1 效用计算的出现2.2 客户机/服务器模式2.3 集群计算2.4 服务计算2.5 分布式计算2.6 网格计算 三、云计算计算模式的成熟与多元化3.1 主流云计算服务模式的确立3.1.…

Vue 学习之旅:从基础到实践(vue快速上手+插值表达式+指令上)

Vue 学习之旅:从基础到实践 文章目录 Vue 学习之旅:从基础到实践一、Vue 简介二、创建 Vue 实例与插值表达式(一)创建 Vue 实例步骤(二)插值表达式 三、Vue 核心特性 - 响应式四、Vue 指令(一&a…

PMP–一、二、三模、冲刺–分类–7.成本管理

文章目录 技巧一模7.成本管理--4.控制成本--数据分析--挣值分析--进度绩效指数(SPI)是测量进度效率的一种指标,表示为挣值与计划价值之比,反映了项目团队完成工作的效率。 当 SPI小于 1.0 时,说明已完成的工作量未达到…

字符串 (算法十一)

简介 没有固定题型&#xff0c;内容很杂&#xff0c;可以学习下string接口与相关操作 1.最长公共前缀 link&#xff1a; 解法一&#xff1a;两两比较 code class Solution { public:string longestCommonPrefix(vector<string>& strs) {// 两两比较string ans …

摄像头模块在狩猎相机中的应用

摄像头模块是狩猎相机的核心组件&#xff0c;在狩猎相机中发挥着关键作用&#xff0c;以下是其主要应用&#xff1a; 图像与视频拍摄 高清成像&#xff1a;高像素的摄像头模块可确保狩猎相机拍摄出清晰的图像和视频&#xff0c;能够捕捉到动物的毛发纹理、行为细节及周围环境的…

给DevOps加点料:融入安全性的DevSecOps

从前&#xff0c;安全防护只是特定团队的责任&#xff0c;在开发的最后阶段才会介入。当开发周期长达数月、甚至数年时&#xff0c;这样做没什么问题&#xff1b;但是现在&#xff0c;这种做法现在已经行不通了。 采用 DevOps 可以有效推进快速频繁的开发周期&#xff08;有时…

沸点 | 聚焦嬴图Cloud V2.1:具备水平可扩展性+深度计算的云原生嬴图动力站!

近日&#xff0c;嬴图正式推出嬴图Cloud V2.1&#xff0c;此次发布专注于提供无与伦比的用户体验&#xff0c;包括具有水平可扩展性的嬴图Powerhouse的一键部署、具有灵活定制功能的管理控制台、VPC / 专用链接等&#xff0c;旨在满足用户不断变化需求的各项前沿功能&#xff0…

Mysql--架构篇--存储引擎InnoDB(内存结构,磁盘结构,存储结构,日志管理,锁机制,事务并发控制等)

MySQL是一个多存储引擎的数据库管理系统&#xff0c;支持多种不同的存储引擎。每种存储引擎都有其独特的特性、优势和适用场景。选择合适的存储引擎对于优化数据库性能、确保数据完整性和满足业务需求至关重要。 注&#xff1a;在同一个Mysql的数据库中&#xff0c;对于不同的表…

springboot高校电子图书馆的大数据平台规划与设计

Spring Boot高校电子图书馆的大数据平台规划与设计是一个综合性的项目&#xff0c;旨在利用现代信息技术提升高校电子图书馆的服务质量和管理效率。以下是对该项目的详细介绍&#xff1a; 一、背景与需求 随着高校教育信息化的不断推进&#xff0c;电子图书馆的资源和用户数量…

lwip单网卡多ip的实现

1、今天要实现lwip的多个ip配置&#xff0c;本来以为需要自己修改很多核心代码 2、查阅资料才发现&#xff0c;lwip已经把接口留出来了 /** Define this to 1 and define LWIP_ARP_FILTER_NETIF_FN(pbuf, netif, type) * to a filter function that returns the correct neti…

《零基础Go语言算法实战》【题目 2-22】Go 调度器优先调度问题

《零基础Go语言算法实战》 【题目 2-22】Go 调度器优先调度问题 下面代码的输出是什么&#xff1f;请说明原因。 package main import ( "fmt" "runtime" "sync" ) func main() { runtime.GOMAXPROCS(1) wg : sync.WaitGroup{} wg.Add(10)…

浏览器输入http形式网址后自动跳转https解决方法

一、问题描述 使用浏览器 网上冲浪 时会遇到一个情况&#xff1a; 在浏览器中输入“http域名”后会自动变成“https 域名”的形式&#xff0c;此时“https 域名”的网站可能已停止对外提供服务了&#xff0c;这时会出现如下不友好的网页提示&#xff1a; 二、处理方法&#x…

【UE5 C++课程系列笔记】27——多线程基础——ControlFlow插件的基本使用

目录 步骤 一、搭建基本同步框架 二、添加委托 三、添加蓝图互动框架 四、修改为异步框架 完整代码 通过一个游戏初始化流程的示例来介绍“ControlFlows”的基本使用。 步骤 一、搭建基本同步框架 1. 勾选“ControlFlows”插件 2. 新建一个空白C类&#xff0c;这里…

WeakAuras NES Script(lua)

WeakAuras NES Script 修星脚本字符串 脚本1&#xff1a;NES !WA:2!TMZFWXX1zDxVAs4siiRKiBN4eV(sTRKZ5Z6opYbhQQSoPtsxr(K8ENSJtS50(J3D7wV3UBF7E6hgmKOXdjKsgAvZFaPTtte0mD60XdCmmecDMKruyykDcplAZiGPfWtSsag6myGuOuq89EVDV9wPvKeGBM7U99EFVVVV33VFFB8Z2TJ8azYMlZj7Ur3QDR(…

android进入fastboot

安装windows驱动。android进入fastboot模式后&#xff0c;需要Windows驱动来跟adb通信&#xff0c;所以需要预先安装Windows usb驱动&#xff0c;否则进入fastboot模式后&#xff0c;无法使用adb连接手机。 下载网址&#xff1a;https://developer.android.com/studio/run/win-…

LabVIEW光流跟踪算法

1. 光流跟踪算法的概述 光流&#xff08;Optical Flow&#xff09;是一种图像处理技术&#xff0c;用于估算图像中像素点的运动。通过比较连续帧图像&#xff0c;光流算法可以分析图像中的运动信息&#xff0c;广泛用于目标跟踪、运动检测和视频处理等场景。该示例使用了NI Vi…

系统看门狗配置--以ubuntu为例

linux系统配置看门狗 以 ubuntu 系统配置看门狗为例 配置看门狗使用的脚本文件&#xff0c;需要使用管理员权限来执行&#xff1a; 配置是&#xff1a;系统每 30S 喂一次狗&#xff0c;超过 60S 不进行投喂&#xff0c;就会自动重启。 1. 系统脚本内容&#xff1a; #!/bin/b…

Windows的Redis查看自己设置的密码并更改设置密码

查看密码 由于我的Redis安装很久了&#xff0c;所以忘记是否有设置密码&#xff0c;查看步骤如下&#xff1a; 启动redis&#xff0c;启动流程可以看这篇文章&#xff1a;https://blog.csdn.net/changyana/article/details/127679871 在redis安装目录下打开redis-cli.exe&…

E10.【C语言】练习:编写一个猜数字游戏

目录 1.规则 2.准备 3.游戏代码 1.规则 1.程序生成1-100间的随机数 2.用户猜数字 猜对了&#xff1a;游戏结束 猜错了&#xff1a;程序会告知猜大了或猜小了&#xff0c;继续进行游戏&#xff0c;直到猜对 3.游戏可以一直玩除非退出游戏 2.准备 1.框架&#xff1a;循…

《异步编程之美》— 全栈修仙《Java 8 CompletableFuture 对比 ES6 Promise 以及Spring @Async》

哈喽&#xff0c;大家好&#xff01;在平常开发过程中会遇到许多意想不到的坑&#xff0c;本篇文章就记录在开发过程中遇到一些常见的问题&#xff0c;看了许多博主的异步编程&#xff0c;我只能说一言难尽。本文详细的讲解了异步编程之美&#xff0c;是不可多得的好文&#xf…