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证书将其加入系统证书库中。

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

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

(0)
上一篇 2022年8月22日 下午1:00
下一篇 2022年8月22日 下午1:00


相关推荐

  • AWStats简介

    AWStats简介安装[url]http://sourceforge.net/projects/awstats/[/url]下载安装包后:GNU/Linux:tarzxfawstats-version.tgzawstats的脚本和静态文件缺省都在wwwroot目录下:将cgi-bin目录下的文件都部署到cgi-bin/目录下:/home/apache/cgi-bin/awstats/…

    2022年7月16日
    19
  • 谷歌搜索语法(一)基本语法

    谷歌搜索语法(一)基本语法Google 是一款十分强大的搜索引擎 黑客们常常借助它搜索网站的一些敏感目录和文件 甚至可以利用它的搜索功能来自动攻击那些有漏洞的网站 而有些人可以通过搜索把某个个人的信息 包括住址 电话号码 出生年月等都可以搜索出来 当然我们在日常的生活中正确的借助 Google 搜索也可以更加高效的找到我们需要的东西

    2026年3月20日
    2
  • gis中char是什么字段_输入一个字符串统计字母个数

    gis中char是什么字段_输入一个字符串统计字母个数维护一个字符串集合,支持两种操作:I x 向集合中插入一个字符串 x;Q x 询问一个字符串在集合中出现了多少次。共有 N 个操作,输入的字符串总长度不超过 105,字符串仅包含小写英文字母。输入格式第一行包含整数 N,表示操作数。接下来 N 行,每行包含一个操作指令,指令为 I x 或 Q x 中的一种。输出格式对于每个询问指令 Q x,都要输出一个整数作为结果,表示 x 在集合中出现的次数。每个结果占一行。数据范围1≤N≤2∗104输入样例:5I abcQ abcQ ab

    2022年8月9日
    13
  • 语义分割总结_细粒度语义分割

    语义分割总结_细粒度语义分割图像分割算法总结1.评价指标:普通指标:PixelAccuracy(PA,像素精度):标记正确的像素点占所有像素点的比例。混淆矩阵中=\(\frac{{\rm{对角线}}}{总和}\)Mea

    2022年8月5日
    6
  • 深入理解Volatile关键字及其实现原理「建议收藏」

    深入理解Volatile关键字及其实现原理「建议收藏」volatile的用法volatile通常被比喻成"轻量级的synchronized",也是Java并发编程中比较重要的一个关键字。和synchronized不同,volatile是一个变量修饰符,只能用来修饰变量。无法修饰方法及代码块等。volatile的用法比较简单,只需要在声明一个可能被多线程同时访问的变量时,使用volatile修饰就可以了。如以下代码,是一个比较典型的使用双…

    2022年5月12日
    42
  • 利用java生成uuid

    利用java生成uuid在实际项目中,我们可能想生成一个随机的而且可以保证唯一的标识,比如在给图片命名时,这时就可以采用uuid来生成随机字符串,这个随机字符串基本上是不会出现重复的。什么是UUIDuuid,就是通用唯一识别码的缩写。它的组成比较复杂,是基于当前时间(纳秒级时间)、计数器、硬件标识(通常是MAC地址)以及随机数等组合来生成的,一般情况下,不会生成重复的UUID(重复几率非常小,据概率估计,若每秒产生10亿笔UUID,100年后只产生一次重复的机率是50%),所以,我们大可不必考虑发生重复的问题。它有很多不

    2026年2月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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