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

相关文章

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详