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

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意