PKI体系及常见证书

PKI体系及常见证书http://blog.chinaunix.net/space.php?uid=23637692&do=blog&id=30579881.PKI体系1.1PKI(PublicKeyInfrastructure,公钥基础架构)PKI是一套以公钥技术为基础、提供安全服务的架构,由认证机构(CA),数字证书库,密钥备份和恢复,证书作废系统,应用接口等组成。CA是PK

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

http://blog.chinaunix.net/space.php?uid=23637692&do=blog&id=3057988

1.PKI体系 1.1 PKI(Public Key Infrastructure,公钥基础架构)

PKI是一套以公钥技术为基础、提供安全服务的架构, 由认证机构(CA), 数字证书库, 密钥备份和恢复, 证书作废系统, 应用接口等组成。CA是PKI的核心,CA的主要功能有:证书发放、证书管理(更新、撤消、验证)。

几个基本概念:

  • 证书(Certificate):数字证书证明证书主题所描述的主体对公钥的拥有关系。
    • 根证书:位于证书层次的最高层,所有证书链均终结于根证书。 >从属证书:由上一级认证机构颁发的证书。
    • 自签名证书:证书中的公钥和用于验证证书的密钥是相同的。自签名证书都是根证书。
  • 认证中心(Certificate Authority/Certification Authority):颁发数字证书的机构。
    • 根CA:一种特殊的CA,受到无条件地信任,位于证书层次结构的最高层。根CA必须对自己的证书签名,因为在证书层次结构中不存在更高的认证机构。常见根CA有:VeriSign, GlobalSign, Thawte, GeoTrust等。
    • 从属CA:拥有上一级CA的CA。从属CA的证书中公钥和用于验证证书的密钥是不相同的。
  • CA/证书的层级结构:PKI架构中,从根CA开始,CA体系表现为自上而下的层次结构。下级CA信任上一级CA;下级CA由上一级CA颁发证书并认证。
  • 公钥(Public Key):不对称密钥加密体系中,可以提供给他人使用的密钥。一般包含在证书中。
  • 私钥(Private Key):不对称密钥加密体系中,仅供自己使用的密钥。
  • 证书撤消列表(Certificate Revocation List, CRL):CRL给出了证书颁发者认定为无效的证书的序列号列表。

1.2 X.509标准

X.509标准是ITU-T为PKI所设计的一套标准。X.509标准定义了公钥证书(public key certificate), 证书撤消列表(certificate revocation list), 属性证书(attributes certificat), 和证书路径验证算法的标准。

通常,X.509证书包含以下信息:

Certificate

  1. Version(版本号)
  2. Serial Number(序列号)
  3. Algorithm ID(算法ID)
  4. Issuer(颁发者)
    1. Validity(有效期)
    2.      Not Before(起始时间)
    3.      Not After(终止时间)
    1. Subject(主题) 包括以下类容 
    2.      Common Name(CN, 公共名称) 
    3.      Organization Name(O, 单位名称) Locality(L, 城市) 
    4.      State(S, 省份) 
    5.      Country(C, 国家, 字母缩写)
    1. Subject Public Key Info(公钥信息)
    2.      Public Key Algorithm(公钥算法)
    3.      Subject Public Key(公钥)
  5. Issuer Unique Identifier (Optional)(颁发者唯一ID, 可选)
  6. Subject Unique Identifier (Optional)(主题唯一ID, 可选)
  7. Extensions (Optional)(扩展,可选)
  1. Certificate Signature Algorithm(证书签名算法)
  2. Certificate Signature(证书签名)









1.3 PKCS(Public-key cryptography standards)

RSA数据安全公司发布的一组公钥加密系统标准, 主要涉及证书申请,更新,撤消列表发布,数字签名,数字封装等方面。

到目前为止,PKCS标准共有15个

PKCS已发布的标准有:

  • PKCS#1 : RSA Cryptography Stand. RSA密码编译标准.RSA公钥和私钥数学特性和格式,以及执行RSA加密/解密,签名生成和验证的基本算法.
  • PKCS#2 : RSA消息摘要加密. 已撤消, 合并入PKCS#1
  • PKCS#3 : Diffie-Hellman Key Agreenment Standard. D-H密钥交换协议, 通信双方在不安全通信信道中协商公用安全密钥的协议.
  • PKCS#4 : RSA密钥语法. 已撤消,合并入PKCS#1
  • PKCS#5 : Password-based Encryption Standard. 使用基于密码的密钥加密字符串的方法.
  • PKCS#6 : Extended-Certificate Syntax Standard. 扩展证书语法标准. 旧的X.509 v1版本证书扩展规范. X.509 v3废弃.
  • PKCS#7 : Cryptographic Message Syntax Standard. 加密消息语法标准. 用于公钥交换(PKI)方式下如何对消息进行加密或签名;也可用于证书分发.
  • PKCS#8 : Private-Key Information Syntax Standard. 私钥信息语法标准. 如何描述私钥信息.
  • PKCS#9 : Selected Attribute Types. 一些被选作用于PKCS#6证书扩展, PKCS#7数字签名消息, PKCS#8私钥信息,PKCS#10证书签名请求的属性.
  • PKCS#10: Certification Request Standard. 证书请求标准. 发送至CA的证书请求的消息格式.
  • PKCS#11: 加密系统通用应用程序接口,Cryptoki
  • PKCS#12: 个人信息交换语法标准. 用于存储使用了密码保护的私钥及相应公钥证书的文件格式. PFX为PKCS#12的前身.
  • PKCS#13: Elliptic Curve Cryptography Standard. 椭圆曲线加密体系标准. 基于有限域椭圆曲线代数结构的公钥加密体系. 开发中.
  • PKCS#14: Pseudo-random Number Generation. 伪随机数生成标准. 开发中
  • PKCS#15: Cryptographic Token Information Format Standard. 加密令牌信息格式标准. 允许加密令牌用户可以以与应用Cryptoki无关方式向应用标识自己身份.

1.4 PEM(Privacy-enhanced Electronic Mail),增加隐私电子邮件标准

PEM是早期IETF建议的一套使用公钥加密体系的安全电子邮件标准. 由于各种原因未能大规模应用。不过,PEM标准中基于Base64编码的X.509证书成为了CA证书的通用格式之一。

PEM文件以”—–BEGIN CERTIFICATE—–“标识开始,以”—–END CERTIFICATE—–“标识终结。支持在同一文件中描述多个证书。

PKCS & X.509 & PEM

简单地说,PKCS和X.509是不同组织/公司所发布的针对PKI内不同领域的两个/套标准。PKCS系列标准中所涉及到的证书部分均遵守X.509标准。

X.509标准所考虑的核心问题是(公钥)证书的格式/内容,如何检验证书的有效性,以及证书撤消列表等。

PKCS系列标准所关注的则是整个公钥加密体系。在PKCS发布的一系列标准中,有些与证书无关(因此也就与X.509无直接关系),如下面列出的 PKCS#1 RSA密码编译标准;有些则与X.509有直接关系,如PKCS#6是在X.509证书最初v1版本基础上的扩展,随着X.509证书版本升级到 v3,PKCS#6则被废弃;再如PKCS#12个人信息交换语义标准,定义了包含公钥证书和个人私钥的个人信息文件的格式,其中的公钥证书部分则完全遵守X.509证书格式。

PEM格式证书指采用了采用Base64编码的X.509证书(除X.509标准证书内容外,PEM中还可以将个人私钥等对象存储进来)。

1.5 两种编码规范

同样内容的证书,可以采用不同的编码方式。

DER(Distinguished Encoding Rules):ITU-T X.690中规定的一套将任意类型数据编码为二进制格式的规范,可认为是BER(Basic Encoding Rules)子集之一。

Base64编码:将二进制数据每6比特一组转换为64个可打印ASCII字符之一的一种3B4B编码方式。最初用来对电子邮件进行编码,后也被应用于其他领域。

2 常见证书格式

常见证书相关文件名后缀

  • .csr :X.509证书请求文件(Certificate Signing Request)。CA签名后生成.crt证书文件
  • .cer, .crt, .der : DER二进制编码的X.509证书,不包含私钥
  • .pem : PEM Based64编码的DER证书(或证书链,可包含私钥)
  • .p7b, .p7c : PKCS#7标准证书(或证书链,不包含私钥). Win平台下常被用来存储证书链. 证书存放在”—–BEGIN PKCS7—–“和”—–END PKCS7—–“之间.
  • .p7r : PKCS#7证书请求
  • .p10:PKCS#10证书签名请求文件。CA签名后以p7r文件回复。
  • .p12 : PKCS#12标准证书. 通常包含证书, 公钥, 以及使用了密码保护的私钥
  • .pfx : PKCS#12格式的前身. 通常包含有PKCS#12格式的数据. Win平台下常用作导入/导出证书及私钥.
  • .pvk : 微软用于存放私钥的文件格式
  • .spc(Software Publishing Certificate) : 微软软件发布证书,用于给软件进行签名。
  • .key : Base64编码私钥文件,可以使用或不使用密码保。

3. 证书申请/发放/自签名

普通用户如需要申请证书,则以一定的格式(如csr/p7r等)向某一级CA提供证书所需信息(用户名/联系方式/证书用途等等)提出证书申请请求,CA审核通过后将用户信息/证书用途/颁发时间/有效期/证书序号/用户公钥/签名算法等等信息填入证书,并使用自己的私钥对以上信息进行签名,最终将证书和用户私钥颁发给用户。对于证书被颁发者或者第三人,可以使用CA的公钥来验证证书的有效性。

PKI体系中,CA是分层的,下一级CA的证书由上一级CA颁发;用户/系统/应用如果信任某一个CA,则信任此CA颁发的下一级证书。换句话说,某一个证书,如果用户信任证书库中存在着一条从某个根CA到此证书的完整证书链,则此证书受信;否则不被信任。

对于根CA,由于不存在级别比自己还高的CA,所以根CA的证书是由自己签发的,也即,根CA使用了自己的私钥对自己的证书进行的签名(而普通用户的证书是由证书颁发CA的私钥进行签名的),这就是自签名证书。一般操作系统都已经预置了一些可信根CA证书(如VeriSign等),用户也可以选择自行安装其他根CA证书将其加入系统证书库中。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/172035.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • es6数组方法图解

    es6数组方法图解最近接触了一些web前端开发人员,发现还是很多人不适用es6提供的语义化api。下面分享下看到的图解es6数组方法。很形象的es6数组方法解释:

  • JAVA虚拟机(JVM)以及跨平台原理(JDK、JRE、JVM)

    JAVA虚拟机(JVM)以及跨平台原理(JDK、JRE、JVM)

  • matlab最炫名族风,matlab版 “最炫民族风” — 跟风之作(附音频效果)(转)[通俗易懂]

    matlab最炫名族风,matlab版 “最炫民族风” — 跟风之作(附音频效果)(转)[通俗易懂]该楼层疑似违规已被系统折叠隐藏此楼查看此楼晚上看到个帖,matlab演奏卡农,眼前一亮,以前从没想过用matlab出声,作者真乃大牛。看到一条评论:卡农算什么,有本事来最炫民族风。。。。于是我就手贱了。。。花了几个小时。。。1/3在读懂卡农的程序,1/3在学习简谱知识(还好小学初中学过点),1/3在把简谱转换成代码。。。不多说,程序如下,欢迎试听哈:%%%%%%%%%%%%%%%%%%%%…

  • 自动化测试+性能面试题整理–个人最新【持续更新】「建议收藏」

    自动化测试+性能面试题整理–个人最新【持续更新】「建议收藏」写在前面公司要求招一名自动化测试,能力要求不高,1年左右自动化经验+部分性能经验即可,让我出一份题,我就百度+公司项目遇到的问题,出了一份,出题整体思路是:接口自动化问题+性能问题+规划的ui、app自动化+整体质量体系建设等多方面考虑。下面是正题自动化测试面试题1:基础篇目的:验证求职者是否在自动化测试岗位有实际应用于生产的工作经验1、使用什么测试框架做的上一个项目的自动化测试?说下怎么…

  • 局域网文件传输方式分析

    局域网文件传输方式分析一、概述在C/S结构的软件开发过程中通常被限于局域网范围内, 常常会遇到需要传输数据文件、音视频文件、升级文件到服务器端或者客户端。每个工作站点都是通过交换机或者集线器、路由器等设备相互连接在一起。由于需要传输的站点数量、局域网环境、OS系统的不同,传输上的性能上也有很大的区别, 传输方式也是多种多样的,比如常见的局域网共享传输、基于FTP协议传输、点对点传输等方式。不同的网络操作系统(NOS

  • django常见问题_java map get不存在的key

    django常见问题_java map get不存在的key报错情况Django使用makemigrations做数据迁移的时候报如下错误File"/Users/jkc/.virtualenvs/django_env/lib/python3.7

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号