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

其他配套章节:

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不允许这种情况。

数字证书基本知识总结相关推荐

  1. [svc]数字证书基础知识

    数字证书基础原理 数字证书采用PKI(Public Key Infrastructure)公开密钥基础架构技术,利用一对互相匹配的密钥进行加密和解密. 每个用户自己设定一把特定的仅为本人所知的私有密钥 ...

  2. 加密解密数字证书相关知识

    随着电子商务的迅速发展,信息安全已成为焦点问题之一,尤其是网上支付和网络银行对信息安全的要求显得更为突出.为了能在因特网上开展安全的电子商务活动,公开密钥基础设施( PKI, Public Key I ...

  3. golang解析数字证书

    golang解析数字证书 基础知识 在解析数字证书之前我们要学习一下数字证书的知识,明白一下数字证书中的一些概念. 下面这些知识是你所要了解的,PKCS#8. PKCS#1.Certificate C ...

  4. java安全架构____CA数字证书原理

    转自百度百科:http://baike.baidu.com/link?url=3QmDWbnu1GE0p7wjgELkOfLrHGoB5VVXF88hSDnrfDWRP3hB39S6rcRXCMa3g ...

  5. 网络知识详解之:HTTPS通信原理剖析(对称、非对称加密、数字签名、数字证书)

    网络知识详解之:HTTPS通信原理剖析(对称.非对称加密.数字签名.数字证书) 计算机网络相关知识体系详解 网络知识详解之:TCP连接原理详解 网络知识详解之:HTTP协议基础 网络知识详解之:HTT ...

  6. 什么是数字签名?什么是数字证书?密码学知识?

    阮一峰老师2011年的这篇文章很好,原文如下: 作者:阮一峰 日期:2011年8月9日 来源:http://www.ruanyifeng.com/blog/2011/08/what_is_a_digi ...

  7. 19.系统知识-数字证书

    密码学相关概念 明文(plain text):发送人.接受人和任何访问消息的人都能理解的消息. 密文(cipher text):明文消息经过某种编码后,得到密文消息. 加密(encryption):将 ...

  8. http、https和数字证书的相关知识

    http协议 http协议全称超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准.设计 ...

  9. 网银的业务学习之道:数字证书的基础知识

    一.什么是数字证书 数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证.它是由一个由权威机构--- ...

  10. 一文读懂Https的安全性原理、数字证书、单项认证、双项认证等

    为什么80%的码农都做不了架构师?>>>    本文引用了作者Smily(博客:blog.csdn.net/qq_20521573)的文章内容,感谢无私分享. 1.前言 目前苹果公司 ...

最新文章

  1. 《DSP using MATLAB》示例 Example 6.25
  2. 解题报告:AcWing 352. 闇の連鎖(树上差分、方案统计)
  3. dockerhub 拉取地址_DockerHub 镜像仓库的使用详解
  4. 用递归形成树结构数据
  5. 前端学习(3029):vue+element今日头条管理-顶部导航栏布局
  6. 6年前的Dubbo,2年前的Spring Cloud,都被这个架构干掉了!
  7. jQuery中的$.grep()方法的使用
  8. EasyUI+MVC+EF简单用户管理Demo(问题及解决)
  9. 一起谈.NET技术,asp.net控件开发基础(9)
  10. 实现MySQL允许远程连接
  11. Android Runtime.getRuntime().exec()
  12. 领导者激励团队的最佳方法
  13. 云脉人脸识别门禁 拒绝“伪装”蒙混过关
  14. 现在流行的编程热潮是不是一个骗局?
  15. 给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。
  16. 题目 1878: 蓝桥杯2017年第八届真题-青蛙跳杯子
  17. cisco3560(Cisco3560 设置上行端口)
  18. 源码安装MySQL-5.7.38的脚本
  19. 最新研究:用多重纠缠光超越量子计算
  20. web前端高级React - React从入门到进阶之组件的状态提升

热门文章

  1. 局域网https安全证书解决方案mkcert
  2. 我们真的需要智能路由器?
  3. 使用DNSLog进行盲打
  4. one-hot向量形式
  5. C# 之 Word光标移动 GoTo 方法
  6. Windows10+CentOS 7 双系统安装
  7. 华硕主板固态硬盘不识别_[主板] 开机后无法识别硬盘或SSD的故障排除方式
  8. Android批量打包
  9. ​单页应用程序是如何打破网页设计的?
  10. 你真的了解Franka吗?一文带你揭秘Franka常见问题,你想知道的都在这里!