数字证书

article/2025/9/18 22:34:27

文章目录

  • 前言
  • 一、什么是数字证书
  • 二、数字证书申请和验证
    • 1.证书申请流程
    • 2.浏览器如何验证证书
  • 三、KeyTool自签名证书
    • 1.生成自签名证书
    • 2.导出证书
    • 3.查看证书
    • 4.构建CA签名证书
  • 总结


前言

本文主要介绍什么是数字证书和如何使用keytool工具常用命令的使用。最后构建自签名证书。


一、什么是数字证书

数字证书(Digital Certificate )也称电子证书,用于识别网络中用户(计算机)身份,该凭据需要由数字证书颁发机构(Certificate Authority,CA)签发。只有经过CA签发的证书在网络中才具备可认证性。
VeriSign、GerTrust、Thawte是国际权威数字证书颁发认证机构的三巨头。
我国在每个省,直辖市设置有国家权威的数字证书签发机构,如北京北京市数字证书认证中心。
在这里插入图片描述通过使用CA颁发的数字证书,我们可以对网络上传输的数据进行加密、解密、签名、验签操作。确保数据的完整性,机密性,和抗否认性。
数字证书有多种文件编码格式:

  • CER(Canonical Encoding Rules,规范编码格式),它是BER(Basic Encoding Rules,基本编码格式)的一个变种,比BER规定更加严格。
  • DER(Distinguished Encoding Rule,卓越编码格式)同样是BER的一个变种,与CER的不同之处在于:DER使用定长模式,而CER使用变长模式。

二、数字证书申请和验证

1.证书申请流程

在这里插入图片描述
这里的证书机构如果是证书申请者本身,将获得自签名证书

2.浏览器如何验证证书

在浏览器和服务器建立 HTTPS 链接的过程中,服务器向浏览器返回其证书。浏览器此时会验证证书的有效期,证书是否被CA吊销,证书是否是合法的CA机构颁发。

  • 证书中包含证书的有效期,浏览器只需判断当前时间是否在证书的有效范围内
  • 验证证书是否被吊销,一种方法是下载吊销证书列表,第二种方法是在线验证。

接下来是验证证书是否由合法的CA机构颁发。以访问CSDN服务器为例进行解释:

  • 首先,浏览器利用证书的原始信息计算出信息摘要;
  • 然后,利用 CA 的公钥来解密数字证书中的数字签名,解密出来的数据也是信息摘要;
  • 最后,判断这两个信息摘要是否相等。
    在这里插入图片描述

问题:浏览器如何获取CA的公钥
大部分情况下,CA 机构的数字证书都内置在操作系统中,这样当需要使用某 CA 机构的公钥时,我们只需要依据 CA 机构名称,就能查询到对应的数字证书了,然后再从数字证书中取出公钥。浏览器默认信任操作系统内置的证书为合法证书

在这里插入图片描述
存在问题,在实际情况下,CA 机构众多,操作系统不可能将每家 CA 的数字证书都内置进操作系统。
颁发证书的机构划分为两种类型,根 CA(Root CAs)和中间 CA(Intermediates CAs),通常申请者都是向中间 CA 去申请证书的,而根 CA 作用就是给中间 CA 做认证,一个根 CA 会认证很多中间的 CA,而这些中间 CA 又可以去认证其他的中间 CA,这样就形成了证书链
只有通过 WebTrust 国际安全审计认证,根证书才能预装到主流的操作系统,并成为一个可信的认证机构。
在这里插入图片描述
所以只要判断证书的根证书是可信的,那么该证书就是可信证书。

三、KeyTool自签名证书

KeyTool是java的数字证书管理工具,用于数字证书的申请,导入、导出和撤销操作。
KeyTool与本地密钥库相关联,将私钥存于密钥库,公钥则以数字证书输出。

1.生成自签名证书

申请数字证书之前,需要在密钥库中以别名的方式生成本地数字证书
keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -validity 360 -alias theme -keystore theme.keystore
参数含义:

参数含义
-genkeypair表示生成密钥
-keyalg执定密钥算法,这里使用RSA
-keysize执定密钥长度,默认1024,这里指定2048
-sigalg指定数字签名算法,这里指定SHA256withRSA
-validity指定证书有效期,360天
-alias指定别名
-keystore指定密钥库存储位置

执行以上命令,输入密钥库口令及其他相关信息,会创建一个密钥库,同时这个密钥库中包含了一个数字证书
在这里插入图片描述

2.导出证书

这时的数字证书并没有经过CA的认证。不过依然可以使用。下面将证书导出
keytool -exportcert -alias theme -keystore theme.keystore -file theme.cer -rfc
参数含义:

参数含义
-exportcert表示导出证书操作
-alias指定导出别名
-keystore指定密钥库文件
-file指定导出文件路径
-rfc指定以base64编码格式输出

在这里插入图片描述

3.查看证书

可通过以下两种方式查看证书
查看单个证书
keytool -printcert -file theme.cer

在这里插入图片描述
查看密钥库中所有证书:
keytool -list -v -keystore theme.keystore
在这里插入图片描述

4.构建CA签名证书

keeytool -certreq -alias theme -keystore theme.keystore -file theme.csr -v
参数说明:

参数含义
-certreq表示数字证书申请操作
-alias指定别名
-keystore指定密钥库文件
-file指定导出文件
-v详细信息

输出密码和相关参数后,得到一个数字证书签发申请theme.csr文件。接着去CA机构进行签发。获得签发后的数字证书(如:theme.cer文件),需要将其导入信任库。导入证书操作如下:
keytool -importcert -trustcacerts -alias theme -file theme.cer -keystore theme.keystore

参数含义
-importcert表示导入数字证书
-trustcacerts表示将数字证书导入信任库
-alias指定导入别名
-file指定数字证书文件路径
-keystore指定密钥库文件

可以使用以上提到的方式查看导入的证书信息


总结

数字证书常常与传输层SSL/TLS协议共同构建应用层HTTPS协议,确保网络交互安全。下一篇通过java代码实现https请求,如何做到绕过证书认证,单向认证和双向认证。


http://chatgpt.dhexx.cn/article/YNyyXfOx.shtml

相关文章

GCN的Benchmark数据集溯源

前言 GNN领域最经典的论文之一是Kipf同学2016年发布的GCN。 经典的GCN做了四个数据集的实验,后续工作基本会在这4个数据集上也做一次。 但是由于年代久远,和一些历史问题, 后来者想做对比实验难免遇到一些“从哪里获取"与"是这…

GNN学习笔记(四):图注意力神经网络(GAT)节点分类任务实现

目录 0 引言 1、Cora数据集 2、citeseer数据集 3、Pubmed数据集 4、DBLP数据集 5、Tox21 数据集 6、代码 嘚嘚嘚,唠叨小主,闪亮登场,哈哈,过时了过时了,闪亮登场换成大驾光临,哈哈,这样才…

图卷积神经网络GCN之节点分类

使用pytorch 的相关神经网络库, 手动编写图卷积神经网络模型(GCN), 并在相应的图结构数据集上完成节点分类任务。本次实验的内容如下: 实验准备:搭建基于GPU的pytorch实验环境。数据下载与预处理:使用torch_geometric…

win10下使用pycharm实现基于pyg的cora+citeseer+pubmed数据集的JKNET模型测试

目录 前期准备工作 1、数据集基本情况 2、标准数据集划分方式 3、数据集处理和分析 整体数据分析 cora citeseer pubmed 4、代码参考 GraphSAGE实验结果(代码详细注释) 1、代码结构 2、超参数 3、实验结果(pubmed+mean_pool+sum) 2层SageGCN层 实验补充 3层S…

GraphSAGE模型实验记录(简洁版)【Cora、Citeseer、Pubmed】

1、准备工作 数据集 数据集图节点边特征标签(y)Cora12708542914337Citeseer13327473237036Pubmed119717443385003 数据集划分方式:https://github.com/kimiyoung/planetoid (Zhilin Yang, William W. Cohen, Ruslan Salakhutdinov, Revisiting Semi-Supervised L…

GCN使用的数据集Cora、Citeseer、Pubmed、Tox21格式

文章目录 Cora、Citeseer、Pubmed以Cora为例数据格式示例 Tox21 数据集 本文分享一下图卷积网络GCN里用到的一些数据集的格式 Cora、Citeseer、Pubmed 数据集来源#图#节点#边#特征#标签(y)Cora“Collective classification in network data,” AI magazine,200812708542914337…

小白的靶机VulnHub-Stapler

从这一台靶机开始 就要上VirtualBox了 开机界面就是个这 就凑合一下 开桥接 确定靶机ip地址 :192.168.56.102 要上 了哦!!!!! 扫出 好多 好多 端口 像极了一个蜜罐 我淦 从ftp 入手吧 进行匿名登录 进…

Vulnhub-靶机-Stapler 1

Vulnhub—靶机—Stapler 1 本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关 文章目录 Vulnhub—靶机—Stapler 1一、信息收集二、漏洞利用三、Flag 一、信息收集 【步骤一】使…

调用Jenkins api报错 403 forbidden

** 调用Jenkins api报错 403 forbidden ** String url url "/computer/doCreateItem?nametest&typehudson.slaves.DumbSlave";HttpHeaders headers new HttpHeaders();MultiVpalueMap<String, String> parameters new LinkedMultiValueMap<>()…

Vulnhub 靶机 Stapler write up samba+wp advanced-video ->mysql 密码 连接 john解密 登录后台 wp插件getshell sudo提权

Stapler write up 0x00 靶机搭建0x01 信息收集0x02 漏洞挖掘web思路mysql 思路ftp 思路139 samba思路步骤一&#xff1a;ftp匿名访问步骤二&#xff1a;samba139测试步骤三&#xff1a;web渗透 80步骤四&#xff1a;web渗透12380端口步骤五&#xff1a;利用wordpress漏洞步骤六…

macOS分发app打包+签名+公证+添加票据+生成dmg文件

1.打包 网上有很多使用命令行的打包的方式大家可自行查找,以下是使用Xcode进行打包. 首先配置证书要配置Developer ID Application证书然后使用的是Xcode进行打包:Product->Archive 这种打包方式的好处是省去了签名的过程,但是用网上其他人的命令查看签名时候还是未成功&a…

CTF实战之Stapler

CTF实战之Stapler Penetrating Methodology: 0x01 网络扫描&#xff08;Nmap, netdiscover&#xff09; nmap -sP 192.168.153.0/24 通过筛选找到靶机地址 扫描靶机端口 nmap -sT -T4 -sV -p 1-65535 192.168.153.154通过端口扫描发现靶机开了很多端口 我们一个一个来 …

Jenkins 远程命令执行漏洞 (CVE-2018-1000861)复现

文章目录 漏洞描述&#xff08;介绍、成因&#xff09;漏洞危害适用场景实验环境漏洞复现过程1、 开启docker环境2、通过dnslog检测漏洞是否存在3、监听端口4、利用exp获取反弹shell 修复建议扩展知识&#xff08;链接、文章&#xff09; 漏洞描述&#xff08;介绍、成因&#…

VulnHub-STAPLER: 1-靶机渗透学习

靶机地址&#xff1a;https://www.vulnhub.com/entry/stapler-1,150/ 靶机难度&#xff1a;中级&#xff08;CTF&#xff09; 靶机描述&#xff1a;Stapler is reported to be one of several vulnerable systems that are supposed to assist penetration testers with challe…

【甄选靶场】Vulnhub百个项目渗透——项目十:stapler-1(文件上传,多方式提权)

Vulnhub百个项目渗透 Vulnhub百个项目渗透——项目十&#xff1a;stapler-1&#xff08;文件上传&#xff0c;多方式提权&#xff09; 靶场环境 &#x1f525;系列专栏&#xff1a;Vulnhub百个项目渗透 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&…

vulnhub靶机:Stapler

文章目录 0x000x01 靶机安装0x02 靶机发现0x03 端口探测0x04 信息收集端口21&#xff1a;FTP服务端口22&#xff1a;SSH服务端口80&#xff1a;HTTP服务端口139&#xff1a;SMB服务端口666&#xff1a;未知服务端口3306&#xff1a;MySQL服务端口12380&#xff1a;HTTP服务 0x0…

实战打靶集锦-006-Stapler

**写在前面&#xff1a;**记录博主的一次打靶经历。 目录 1. 主机发现2. 端口发现3. 服务枚举4. 服务探查4.1 FTP探查4.1.1 匿名登录4.1.2 Elly用户4.1.3 John用户4.1.4 EXP搜索 4.2 dnsmasq探查4.2.1 基础信息获取4.2.2 EXP搜索 4.3 WEB应用探查4.3.1 浏览器访问4.3.2 目录扫描…

Stapler: 1

Stapler: 1 项目地址&#xff1a;https://www.vulnhub.com/entry/stapler-1,150/ 文章目录 Stapler: 1一、信息收集&#xff1a;1. 靶机地址获取&#xff1a;2. 收集端口服务信息&#xff1a; 二、信息利用1. 针对12380端口进行web目录枚举&#xff1a;1.1 访问&#xff1a;ph…

No.10-VulnHub-Stapler: 1-Walkthrough渗透学习

** VulnHub-Stapler: 1-Walkthrough ** 靶机地址&#xff1a;https://www.vulnhub.com/entry/stapler-1,150/ 靶机难度&#xff1a;中级&#xff08;CTF&#xff09; 靶机发布日期&#xff1a;2016年6月8日 靶机描述&#xff1a;Stapler is reported to be one of several v…

Stapler:1 靶机渗透测试-Vulnhub(STAPLER: 1)

Stapler&#xff1a;1&#xff08;STAPLER: 1&#xff09;靶机渗透-Vulnhub 一、IP端口探测二、端口信息收集1.ftp匿名登录2.OpenSSH漏洞查询3.80端口4.666端口5.SMB枚举6.12380端口 二、边界突破1.video插件文件包含2.修改wordpress数据库管理员密码3.上传webshell 三、提权总…