惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Cisco Blogs
Schneier on Security
Schneier on Security
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
NISL@THU
NISL@THU
L
Lohrmann on Cybersecurity
Scott Helme
Scott Helme
Webroot Blog
Webroot Blog
Project Zero
Project Zero
Google Online Security Blog
Google Online Security Blog
The Last Watchdog
The Last Watchdog
Spread Privacy
Spread Privacy
Hacker News: Ask HN
Hacker News: Ask HN
PCI Perspectives
PCI Perspectives
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
W
WeLiveSecurity
Attack and Defense Labs
Attack and Defense Labs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News | PayPal Newsroom
Help Net Security
Help Net Security
The Hacker News
The Hacker News
H
Heimdal Security Blog
O
OpenAI News
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
Cyberwarzone
Cyberwarzone
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 叶小钗
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
I
Intezer
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security Affairs
P
Proofpoint News Feed
S
Secure Thoughts
腾讯CDC
Google DeepMind News
Google DeepMind News
量子位
罗磊的独立博客

Razeen`s Blog

Let's Encrypt 推出 Gen Y 根证书架构:揭示 Web PKI 的五大未来趋势 通过 Wi-Fi 自动备份你的 iPhone 到 Nas 管理培训感悟:从技术视角看管理之路 UPS 一拖多:保护你的 NAS 和 Linux 服务器 从影音中心到 AI 助手:我的50款 Homelab 服务清单 从SSL证书有效期将缩短到47天聊开去 部署一个自己的 Running Page 谈谈特斯拉 Model Y 用车一年的感受和费用分析 弃用 Disqus 评论,使用自建 Waline 使用 Prometheus 和 Grafana 搭建你的证书监控面板 服务器迁移记:一次磁盘换板引发的Linux分区与挂载的学习 改善信息来源, 利用 RSS 高效获取资讯 (RSShub + Reeder5 + WeWe RSS) 多种 Docker 镜像拉取解决方案与实践 App分享 | AppCleaner - Mac上的卸载神器 Azure OpenAI API 申请和使用 如何开通 OneKey 虚拟信用卡,并充值消费 如何拥有一个可长期在国内使用的国外手机号码 分享开通 ChatGPT Plus 过程 如何开通 Depay 虚拟信用卡,并充值消费 如何开通欧易Web3钱包, 交易入账 如何5分钟内1块钱注册 ChatGPT 如何注册美区的 Apple ID (2023年/无需科学上网) NAS折腾记(11): NASTool3.0体验和降级 NAS折腾记(10): Docker版本的NASTool配置 NAS折腾记(9): NASTool与微信交互,微信发送消息远程下载电影【多图】 NAS折腾记(8):群晖安装 NASTool 实现影音半自动化【多图】 内网穿透(2):Tailscale 组网实现内网穿透,操作简单,无成本 内网穿透(1):总结了11中内网穿透的方式,总有一种适合你 NAS折腾记(7):从零开始设置(黑)群晖系统 NAS折腾记(6):黑群晖系统安装好后怎么洗白? NAS折腾记(5):群晖硬盘休眠设置与分析 NAS折腾记(4): 20分钟手把手带你完美安装 DS918+ 黑群晖7.1.1 NAS折腾记(3):NAS 装机 NAS折腾记(2):B360-ITX 双M.2 双2.5G网口 6 SATA主版 开箱 NAS折腾记(1):328元的4盘位Nas机箱开箱 Openwrt + Clash 全局科学上网 Newifi3 刷入 OpenWrt 固件 v21.02 利用 Markdown 画一些流程图、时序图、甘特图等 Homelab(8): 搭建自用 Gitlab 与 Docker 仓库 Nginx Tcp 转发保留客户端真实 IP (PROXY Protocol) Homelab (7):IPSec VPN(基于证书认证)客户端设置 Homelab (6): 基于自签发证书的 IPSec VPN 搭建 Homelab (5): DDNS 动态域名解析 Homelab (4): Linux 服务器基础环境准备 Homelab (3): 整体网络与基础硬件介绍 Go学习笔记(十)老项目迁移 go module 大型灾难记录 Github Actions 初体验之自动化部署 Hexo 博客 记一次 Nginx DNS 缓存导致转发问题 Homelab (2): 电信悦me网关修改桥接模式,路由器拨号 Homelab (1):5分钟上手黑群晖 NAS 终极 Bash 脚本指南 Typora 自动上传图片到七牛云 Ubuntu 20.04 LTS 有线网卡驱动安装 折腾 Ubuntu 20.04 LTS 开发环境 Go学习笔记(九) 计时器的生命周期[译] 利用 git hook 规范你的代码与 commit message 规范 git commit message 与自动化版本控制 超详细 vim 配置 (with MacVim) Golang 中的 RESTful API 最佳实践 折腾服务器(开篇) 我的第一台个人服务器 Newifi3 实现低成本家庭级科学上网 Go学习笔记(八) | 使用 os/exec 执行命令 如何用 Go 调用 Windows API Mac OS 自动根据 WI-FI 名字改变网络位置 关于 Docker 清理 MIME Types 速查表 Go学习笔记(七) | 理解OAuth 2.0并实现一个客户端 我又又又把博客迁移了 Go学习笔记(六) | 使用swaggo自动生成Restful API文档 Go学习笔记(五) | 使用代码片段(snippets)提高编码效率 书单 - 2018 IPFS 初体验,利用 IPFS 托管你的静态网站 记一次 PostgreSQL LIKE 索引优化,联合字段 LIKE 查询优化。 Disqus 添加有趣的 Reactions 的功能 TLS 1.3 详解 (RFC 8446解读) gRPC在Go中的使用(三)gRPC实现TLS加密通信与流模式 gRPC在Go中的使用(二)gRPC实现简单通讯 gRPC在Go中的使用(一)Protocol Buffers语法与相关使用 CentOS 安装 tshark 抓包工具 Go学习笔记(四) | win上使用VSCode搭建Go开发环境 日常 Postgres 数据库点滴记录 简单了解 PKCS 规范 美食篇 | DIY戚风蛋糕(烤箱做蛋糕) Go学习笔记(三) | 怎么写Go基准测试(性能测试) TLS1.3正式更新,为Nginx添加TLS1.3的支持 一次诡异的数据库删除 GitHub Pages自定义域名开启HTTPS 证书透明度是什么?它是怎么工作的? Go学习笔记(二) | 我对 recover 的一点误解 搭建证书透明度(certificate-transparency)日志服务之从入门到放弃 修复远程登陆 Centos 时,出现 UTF-8 Warning HTTPS篇之SSL握手过程详解 Go学习笔记(一) | postgres与golang点点滴滴 AWS 命令行界面(aws-cli)从安装到快速上手 常用 linux 命令小结(一)文件目录操作 云服务器搭建 hexo 博客,git hooks自动更新 SSH 免密登陆, SSH Config 配置 Golang CGO Mac 交叉编译 Windows 使用 goose 让数据库迁移更加轻松 开始使用Ghost
数字证书分类及怎么区分各类数字证书
2017-11-06 · via Razeen`s Blog

在刚开始接触数字证书的时候,我们经常会听到“服务器证书”,“客户端证书”,“邮件证书”等等相关的数字证书名字,这就是数字证书的一种按照用途分类的分类方式。那么数字证书到底有多少类?又是怎么去区分的呢?

几张证书

下面是我截图的几张证书信息,你知道他们是干什么的,该怎么分类么?

这里有六张证书:

  • 1.我的服务器证书;
  • 2.一张中间证书;
  • 3.VerSign Class 3 CA证书;
  • 4.一张邮件证书;
  • 5.我的iOS app软件签名证书;
  • 6.我的iOS 推送服务证书。 这里你可以看到,我是按照证书的用途分别来介绍这几张证书的,这就是证书分类的一种方式。通常,数字证书可分为两大类:根据持有者分类和根据秘钥分类。

根据证书持有者分类

1.根据证书持有者是否为CA进行分类

根据证书持有者是否为CA,可以将证书分为两类:CA证书和用户证书。CA证书可以为用户或者其他CA签发证书,用户证书则不可以。
X.509证书格式中通过扩展项BasicConstrains来区分这两类证书。当其中的cA项为TRUE时表示为CA证书,为FALSE时表示用户证书。

BasicConstrains扩展项格式用ASN.1描叙如下:

    BasicConstrains := SEQUENCE {
        cA                  BOOLEAN DEFAULT FALSE
        pathLenConstraint   INTEGER(0..MAX) OPTIONAL    
    }

上图中的证书2,3都是CA证书,查看第二章证书的ANS.1结构我们可以看到

OBJECT IDENTIFIER2.5.29.19basicConstraints(X.509 extension)
BOOLEAN     true
OCTET STRING(1 elem)
    SEQUENCE(2 elem)
    BOOLEAN     true  # 说明这是一章CA证书
    INTEGER     0     

其他几张就是用户证书,可以看到证书1的ASN.1结构

OBJECT IDENTIFIER2.5.29.19basicConstraints(X.509 extension)
OCTET STRING(1 elem)
    SEQUENCE(0 elem)

2.按照证书持有者类型进行分类

根据证书的持有者类型,通常将证书分为几类:个人证书、单位证书和系统证书等。

个人证书是CA系统给个人签发的证书,代表个人身份。证书之中需要包括个人信息(如姓名、身份证、E-mail、电话等)和个人的公钥。就像上图4,5,6三张证书。

单位证书是CA系统给机构或者组织等签发的证书,代表单位身份。证书中需要包含单位信息 (如名称、组织机构代码、E-mail、联系人等)和单位的公钥。这类证书在一些公司或机构的站点很容易看到,如GitHub的证书,在证书中我们可以看到一些其组织公司的信息。

系统证书是CA系统给系统软件或设备系统签发的证书,又代表系统的省份。证书中需要包含系统的信息(如IP地址,域名等)和系统公钥。系统证书又包括Web服务器证书、域控制器证书、VPN设备证书、OCSP服务器证书、时间戳服务器证书等。证书1就是一张系统证书(Web服务器证书)

X.509格式本身并不支持这种分类,通常通过在Subject中增加DN(Distinct Name)项区分,如可以增加OU=PERSON表示个人证书,OU=UNIT表示单位证书等。为保持证书内容的统一性,扩展项KeyUsage、ExtKeyUsage必须设置合适的值。

根据秘钥分类

1.根据密钥对产生方式进行分类

根据秘钥对的产生方式,可将证书分为两类:签名证书和加密证书。

证明签名及私钥只用于签名验签,不能用于加密解密。为了保证密钥对的唯一性,该密钥对必须由用户端密码模块产生和保存,在证书签发过程中CA中心并不知道其私钥,只对其公钥进行操作。

仔细查看上面几张证书,我们就可以通过扩展字段密钥使用 ( 2.5.29.15 )来判断该证书的种类及相关用途。

X.509格式本身并不支持这种分类;通常通过存储位置或者应用系统进行区分。为了保持证书内容的同意性,扩展KeyUsage、ExtKeyUsage必须设置合适的值。

KeyUsage中已经定义的类型如下。

  • digitalSignature : 表示数字签名;
  • nonRequdiation : 表示不可抵赖;
  • keyEncipherment : 表示秘钥加密;
  • dataEncipherment : 表示数据加密;
  • keyAgreement : 表示秘钥协商;
  • keyCertSign: 表示证书签名;
  • CRLSign : 表示CRL签名;
  • encipherOnly : 表示只用于加密;
  • decipherOnly : 表示只用于解密。

2.根据证书用途进行分类

根据证书的用途,通常将证书分为SSL服务器证书、SSL客户端证书、代码签名证书、Email证书,时间戳服务器证书、OCSP服务器证书等。

SSL证书只用于SSL/TLS应用,如证书1,是一张服务器证书,用来保证我的网站与用户连接时的数据安全。

Email证书只用于安全电子邮件,如证书4,我们通过这个可以验证证书是谁的,保证邮件通讯过程中的安全,不被篡改。

代码签名证书只用于对代码进行签名验签。如证书5,我写的APP程序在打包时就用该证书的进行签名,用户在安装我的APP时就可以通过该证书知道该APP是谁开发的,用户只有信任了我的证书才可安装。

X.509格式中通过扩展项ExtKeyUsage来区分这几类证书。为了保持证书内容的统一性,扩展项KeyUsage必须设置合适的值。

在图中证书信息中扩展项扩展的密钥使用 ( 2.5.29.37 ) 我们就可以看出该证书的相关用途。

ExtKeyUsage中已经定义的类型如下。

  • id-kp-serverAuth :用于SSL/TLS Web服务器身份认证;
  • id-kp-clientAuth :用于SSL/TLS Web客户端身份认证;
  • id-kp-codeSigning : 用于对可下载的执行代码进行签名;
  • id-kp-emailProtection :用于保护E-mail;
  • id-kp-timeStamping : 用于将对象摘要与时间绑定;
  • id-kp-OCSPSigning :用于对OCSP响应包进行签名。

参考

[1] 《PKI/CA与数字证书技术大全》 张明德 刘伟 编著