
所有证书有多种文件编码格式,主要包括:
CER编码(规范编码格式):是BER(基本编码格式)的一个变种,比BER规定得更严格
DER编码(卓越编码格式):是BER(基本编码格式)的一个变种, 比BER规定得更严格
*CER的不同在于,DER使用定长模式,而CER使用变长模式。
所有证书都符合公钥基础设施(PKI)制定的ITU-T X509国际标准,PKCS(公钥加密标准)由RSA实验室和其他安全系统开发商为促进公钥密码的发展而制定的一系列标准
比如:
PKCS#7(密码消息语法标准----文件后缀名:.p7b、.p7c、.spc)
PKCS#10(证书请求语法标准----文件后缀名:.p10、.csr)
PKCS#12(个人信息交换语法标准----文件后缀名:.p12、.pfx)等
在获得数字证书后,可以将其保存在电脑中,也可以保存在USB Key等相应的设备中。
简单的证书机构签发的流程:
数字证书的应用环境是在https安全协议中,使用流程远比上述加密交互流程复杂
但是相关操作封装在传输层,对于应用层透明,在https安全协议中使用非对称加密算法交换密钥,使用对称加密算法对数据进行加密/解密操作,提高加密/解密效率
数字证书管理工具:KeyTool和OpenSSL构建CSR(数字证书签发申请),交由CA机构签发,形成最终的数字证书
这里我们不对KeyTool做讲解(KeyTool不含有根证书,因此KeyTool没有办法作为CA),网上资料对keytool讲解的也挺多的,我们下面针对OpenSSL进行讲解。
在我们搭建OPEN SSL环境前,我们要知道HTTPS协议和SSL/TLS协议,简单的说,HTTPS就是HTTP+SSL(secure socket layer)/TLS(Transport Layer Security)协议,HTTPS协议为数字证书提供了最佳的应用环境,HTTPS协议一般在服务器中配置,如HTTP服务器APACHE、TOMCAT等。
SSL:位于TCP/IP中的网络传输层,作为网络通讯提供安全以及数据完整性的一种安全协议
TLS:作为SSL协议的继承者,成为下一代网络安全性和数据完整性安全协议
SSL共有3个版本:1.0、2.0、3.0,TLS也有1.0、2.0、3.0,通常我们说的SSL/TLS协议指的是SSL3.0/TLS1.0的网络传输层安全协议
SSL/TLS协议分为两层:
记录协议:建议在可靠的传输协议之上,为高层协议提供数据封装、压缩、加密等基本功能的支持
握手协议:建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等
协商算法 验证算法 客户端验证服务器端证书 服务器端验证客户端证书: 产生密钥
会话密钥 加密交互
- 随机数为后续构建密钥准备
- 其他信息包括服务器证书、甚至包含获取客户端证书的请求
- 如果服务器端回复客户端时带有其他信息,则进入数字证书验证阶段
- 当服务器端和客户端经过上述流程后,就开始密钥构建交互了,服务器端和客户端最初需要主密钥为构建会话密钥做准备:
- 完成上述主密钥构建操作后,服务器端和客户端将建立会话密钥,完成握手协议:
- 上述服务器端和客户端完成了握手协议以后就进入正式会话阶段,如果上述流程中有任何一端受到外界因素干扰发生异常,则重新进入协商算法阶段,下面流程表现进入会话阶段后,服务器端和客户端将使用会话密钥进行加密交互:
OPEN SSL 环境搭建
基础原理中我们提到了两种认证服务,单项认证服务和双向认证服务,我们就以双向认证服务举例说明。
OpenSSL是一个开放源代码软件包,实现了SSL以及相关加密技术,是最常用的证书管理工具,OpenSSL功能远胜于KeyTool,可用于根证书(KeyTool不含有,因此KeyTool没有办法作为CA)、服务器证书、客户证书的管理。