数字证书基本知识总结

本章用于普及证书基本知识,个人总结,如有不对欢迎指正。

其他配套章节:

OPENSSL证书及格式转换

keystore或者JKS证书及转换

开头普及一下证书知识,先说通俗的讲解,证书一般分为两种组成,私钥、公钥,这是一套数字证书,有人说证书通过后缀来判断,比如.pem,.cer.crt等,这是很不科学的。名字后缀也是名字,只是让你更清楚的知道这是什么类型的,可不是看到这种类型的就认为他是私钥或者公钥。

当然自己在创建私钥公钥的时候尽量遵守后缀的规则,不然你自己也忘了这个什么样的东东了。
那么规则有什么呢,我简单说几种我常用的类型。至于其他的可以在下文找到答案。

后缀

含义

备注

.pem

BASE64编码的公私钥文件,可以查看内容

 

.pfx /.keystore

证书仓库,里面包含一对公私钥,同时还可以导入多种公钥证书

这个一般很固定,命名很规范

.crt .cer .der

一般公钥,内荣不可查看

 

以上几种,就是我经常使用几种证书。

记住两点,无论证书是什么格式的证书不要用后缀来判断,没有什么直接关系。

二,证书格式转换了,但是证书内容不会变。比如a.pem通过转换成了b.cer格式证书,除了调用这个证书的方式变了,内容没变,实质还是a.pem。

先说些概念性的东西

PKCS证书 

PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有:
PKCS#7 Cryptographic Message Syntax Standard
PKCS#10 Certification Request Standard
PKCS#12 Personal Information Exchange Syntax Standard

X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。 

PKCS#7 常用的后缀是: .P7B .P7C .SPC
PKCS#12 常用的后缀有: .P12 .PFX
X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRT
X.509 PAM 编码(Base64)的后缀是: .PEM .CER .CRT 

---------------------------------------------------------------------------
.der/.cer/.crt是用于存放证书,不含私钥,前两者为二进制存储,crt文件可能是二进制的,也可能是文本格式的,应该以文本格式居多。
.pem跟crt/cer的区别是它以Ascii来表示,一般是文本格式的,可以放证书或者私钥,pem如果只含私钥的话,一般用.key扩展名,而且可以有密码保护。
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式,二进制格式。
p10是证书请求
p7r是CA对证书请求的回复,只用于导入
p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。
-------------------------------------------------------------------------------
文本格式转换为二进制,一般将字符串用base64解码,即二进制。
-------------------------------------------------------------------------------
对于以上各种证书来说,它们的保存类型有pem和der两种,pem代表着以文本格式保存的公私钥,der是以二进制保存的公私钥。

Java数字证书 keystore类型
Java自带的keytool工具是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。 
keytool 将密钥和证书储存在一个所谓的密钥仓库(keystore)中。缺省的密钥仓库实现将密钥仓库实现为一个文件。它用口令来保护私钥

ketstore类型和JKS类型从理论上来说,两种是同样的类型。

JKS和JCEKS是Java密钥库(KeyStore)的两种比较常见类型(我所知道的共有5种,JKS, JCEKS, PKCS12, BKS,UBER)。
JKS的Provider是SUN,在每个版本的JDK中都有,JCEKS的Provider是SUNJCE,1.4后我们都能够直接使用它。
JCEKS在安全级别上要比JKS强,使用的Provider是JCEKS(推荐),尤其在保护KeyStore中的私钥上(使用TripleDes)。
PKCS#12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。其以二进制格式存储,也称为 PFX 文件,在windows中可以直接导入到密钥区,注意,PKCS#12的密钥库保护密码同时也用于保护Key。
BKS 来自BouncyCastle Provider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个 bit都会产生错误),BKS能够跟JKS互操作,读者可以用Keytool去TryTry。
UBER比较特别,当密码是通过命令行提供的时候,它只能跟keytool交互。整个keystore是通过PBE/SHA1/Twofish加密,因此keystore能够防止被误改、察看以及校验。以前,Sun JDK(提供者为SUN)允许你在不提供密码的情况下直接加载一个Keystore,类似cacerts,UBER不允许这种情况。



  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库系统工程师软考总结,总共总结了126个典型知识点,下载请慎重,尤其没有IT经验的人请勿下载,我想对有数据库操作经验的人有一定帮助,本人亲自考试前记录的备忘录,上下午考试都在65分以上,满分75. 以下是几个总结示例: 1. 数据字典,即元数据,而不是数据本身。 数据字典包括数据项、数据结构、数据流、数据存储和数据处理过程5个部分 2. 结构化设计方法是一种面向数据流的设计方法,与结构化分析方法衔接。 在需求分析阶段,结构化分析方法产生了数据流图,而在设计阶段,结构化设计方法将数据流映射为软件系统的模块结构。数据流图中从系统的输入数据流到系统的输出数据流的一连串变换形成了一条信息流。其中的信息流一般情况下包括变换流型和事物流型。不同类型的数据流到程序模块的映射方法不同。一个软件系统往往不仅仅有一种数据流类型。 3. Putnam和COCOMO都是软件成本估算模型。 Putnam 是动态的相当于根据功能点和人员情况进行工时评估 COCOMO 分为基础、中级、 和详细: 基础相当于整体估计,比如一个CRM 五万。 中级相当于再细分模块,每个模块估计。 详细,是再细分模块和功能点进行估价 4. 运算器也称ALU: 算术逻辑单元,主要有累加器和程序状态寄存器(PSW)组成 5. 控制器: 指令寄存器(保存当前正在执行的指令)、指令译码器(解析当前指令做什么)、程序计数(指向下一个要执行的程序,当当前指令执行完毕后则把下一条指令放到指令寄存器里面) 。。。 108. 数字签名和数字证书的区别 数字签名:用户A对正文进行摘要,用户A用自己的私钥进行加密,用户B用用户A的公钥进行解密。 但是数字签名还存在一个问题,用户C偷偷在用户B里面用自己的公钥换了用户A的公钥,然后用户C用自己的私钥进行数字签名冒充A给用户B发信息,这样用户B根本不知道用户C已经冒充A了。数字证书能解决这个问题。 数字证书: 用户A找一个公认中心对自己的公钥进行认证,即CA中心。公认中心用自己的私钥对用户A的公钥进行加密,即得到A的数字证书。 这个时候用户A给用户B发信息的时候,发送正文的同时,再发送A的数字签名,和数字证书。用户B接到信息后,用CA的公钥对A的数字证书进行解密验证,得到A的公钥,B再用得到的A的公钥对A的数字签名进行严重,从而判断信息的身份正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值