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

相关文章

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

C#中lock关键字的使用小结

《C#中lock关键字的使用小结》在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时,其他线程无法访问同一实例的该代码块,下面就来介绍一下lock关键字的使用... 目录使用方式工作原理注意事项示例代码为什么不能lock值类型在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

C# $字符串插值的使用

《C#$字符串插值的使用》本文介绍了C#中的字符串插值功能,详细介绍了使用$符号的实现方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录$ 字符使用方式创建内插字符串包含不同的数据类型控制内插表达式的格式控制内插表达式的对齐方式内插表达式中使用转义序列内插表达式中使用

flask库中sessions.py的使用小结

《flask库中sessions.py的使用小结》在Flask中Session是一种用于在不同请求之间存储用户数据的机制,Session默认是基于客户端Cookie的,但数据会经过加密签名,防止篡改,... 目录1. Flask Session 的基本使用(1) 启用 Session(2) 存储和读取 Se

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测