CA证书说明与使用

2024-09-02 14:20
文章标签 使用 说明 证书 ca

本文主要是介绍CA证书说明与使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、CA证书说明

1、介绍

什么是CA?

CA全称为Certificate Authority,可以翻译为证书颁发机构。主要功能为:证书发放、证书更新、证书撤销和证书验证。

什么是证书?

证书指数字证书。

数字证书又称为数字标识。其作用是对计算机网络交流中的信息和数据进行加密和解密保证信息和数据的机密性、完整性、可用性和不可抵赖性。

2、CA证书下发流程

图1 CA证书下发流程图

关键步骤

1、服务端通过openssl生成密钥对(公钥和私钥),生成一个证书请求文件(公钥+申请信息+域名/IP)发送给CA机构进行签名

2、CA机构对请求文件进行身份确认,邮箱、第三方数据库、当面认证和身份确认等,根据身份认证等级来划分不同的认证方式

3、CA机构使用自己的私钥对请求信息和公钥进行签名,也就是生成证书

图2 CA证书组成

图3 CA证书验证过程

  • CA 签发证书的过程,如上图左边部分:
    • 首先 CA 会把持有者的公钥、用途、颁发者、有效时间等信息打成一个包(蓝色),然后对这些信息进行 Hash 计算,得到一个 Hash 值
    • 然后 CA 会使用自己的私钥将该 Hash 值加密,生成 Certificate Signature,也就是 CA 对证书做了签名
    • 最后将 Certificate Signature 添加在文件证书上,形成数字证书
  • 客户端校验服务端的数字证书的过程,如上图右边部分:
    • 首先客户端会使用同样的 Hash 算法计算该证书的 Hash 值 H1
    • 通常浏览器和操作系统中集成了 CA 的公钥信息,浏览器收到服务器的证书后可以使用 CA 的公钥解密 Certificate Signature 内容,得到一个 Hash 值 H2
    • 最后比较 H1 和 H2,如果值相同,则为可信赖的证书,否则则认为服务器证书不可信

3、申请信息

图4 申请信息参数表

图5 大华监控摄像机申请信息参数

申请信息必须要的参数包括IP/域名、有效期、地区,其中有效期的最大时间为5000天

4、下发方式

(1)使用openssl创建(命令行方式)

1、生成CA证书

//创建CA证书私钥
openssl genrsa -aes256 -out ca.key 2048
//生成请求证书信息
openssl req -new -sha256 -key ca.key -out ca.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=CA/emailAddress=admin@test.com"
//自签署证书
openssl x509 -req -days 36500 -sha256 -extensions v3_ca -signkey ca.key -in ca.csr -out ca.cer

生成CA证书之后可以直接部署在服务器上,也可以通过下面的步骤,用CA证书签署服务器公钥生成服务器证书,然后部署到服务器上

2、生成服务器证书

//创建服务器私钥
openssl genrsa -aes256 -out server.key 2048
//生成服务器请求信息
openssl req -new -sha256 -key server.key -out server.csr -subj "/C=CN/ST=SD/L=JN/O=QDZY/OU=www.test.com/CN=SERVER/emailAddress=admin@test.com"
//使用CA证书签署服务器证书
openssl x509 -req -days 36500 -sha256 -extensions v3_req  -CA  ca.cer -CAkey ca.key  -CAserial ca.srl  -CAcreateserial -in server.csr -out server.cer
(2)通过第三方CA机构颁发

1、通过openssl生成一个请求文件*.csr,必须包含申请信息(IP/域名、有效期、地区)

2、选择市场上公认的权威性的CA中心

3、向CA中心提交请求文件,对该文件进行签名,生成CA证书

4、获取到第三方机构颁发的私钥和证书并导入到设备中

(3)两种方式的区别

通过openssl生成证书,需要生成CA密钥对和CA证书,而第三方CA机构颁发只需要提供一个请求文件即可。

通过openssl直接生成的CA证书,访问服务器,会出现以下隐患:

图6 浏览器访问隐患警告

5、格式说明

*.pem:证书或秘钥的文本存放格式

*.crt/cer:证书,Linux下叫crt,window下叫cer

*.key:通常用于表示私钥或公钥文件。这个后缀比较通用,可以表示任何类型的加密密钥

*.csr:证书签名请求文件

6、证书分类

设备证书

设备证书用于证明设备的合法身份,例如浏览器通过 HTTPS 访问设备时,需要校验设备证书。

受信任证书

受信任的 CA 证书用于设备校验对端主机的合法身份。例如进行 802.1x 认证时,需要安装交换

机的 CA 证书来校验其合法身份。

7、重要说明

说明一:证书 = 申请者与颁发者信息 + 签名 + 公钥

说明二:证书文件的后缀并不能作为证书是哪一种编码的判断依据。对于私钥/公钥的文件后缀有时候用 key/crt,有时候用 pem,其实这不重要,重要的是文件中的内容格式

大华和海康使用的私钥格式为pem、证书格式为cer

二、应用

1、HTTPS

2、802.1x

3、音视频加密 RTSP over TLS

备注

window查看CA证书:win+R 输入:certmgr.msc

相关资料:

CA证书说明:https://www.cnblogs.com/littlehann/p/3738141.html

openssl中文文档:25.1 证书申请介绍_OpenSSL 中文手册

这篇关于CA证书说明与使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130200

相关文章

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin