所有证书有多种文件编码格式,主要包括:

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记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等

协商算法                       验证算法 客户端验证服务器端证书                 服务器端验证客户端证书:                              产生密钥

    

会话密钥                                           加密交互

  1. 随机数为后续构建密钥准备
  2. 其他信息包括服务器证书、甚至包含获取客户端证书的请求
  3. 如果服务器端回复客户端时带有其他信息,则进入数字证书验证阶段
  4. 当服务器端和客户端经过上述流程后,就开始密钥构建交互了,服务器端和客户端最初需要主密钥为构建会话密钥做准备:
  5. 完成上述主密钥构建操作后,服务器端和客户端将建立会话密钥,完成握手协议:
  6. 上述服务器端和客户端完成了握手协议以后就进入正式会话阶段,如果上述流程中有任何一端受到外界因素干扰发生异常,则重新进入协商算法阶段,下面流程表现进入会话阶段后,服务器端和客户端将使用会话密钥进行加密交互:

OPEN SSL 环境搭建

基础原理中我们提到了两种认证服务,单项认证服务和双向认证服务,我们就以双向认证服务举例说明。

OpenSSL是一个开放源代码软件包,实现了SSL以及相关加密技术,是最常用的证书管理工具,OpenSSL功能远胜于KeyTool,可用于根证书(KeyTool不含有,因此KeyTool没有办法作为CA)、服务器证书、客户证书的管理。

知识积累:CA详解的更多相关文章

  1. Linux基础知识之挂载详解(mount,umount及开机自动挂载)

    Linux基础知识之挂载详解(mount,umount及开机自动挂载) 转载自:http://www.linuxidc.com/Linux/2016-08/134666.htm 挂载概念简述: 根文件 ...

  2. Httpd服务进阶知识-HTTP协议详解

    Httpd服务进阶知识-HTTP协议详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.WEB开发概述 1>.C/S编程 CS即客户端.服务器编程. 客户端.服务端之间需 ...

  3. Java程序员的必备知识-类加载机制详解

    类加载器的概念 类加载器是一个用来加载类文件的类. Java源代码通过javac编译器编译成类文件.然后JVM来执行类文件中的字节码来执行程序.类加载器负责加载文件系统.网络或其他来源的类文件. JV ...

  4. [Spring学习笔记 1 ] Spring 简介,初步知识--Ioc容器详解 基本原理。

    一.Spring Ioc容器详解(1) 20131105 1.一切都是Bean Bean可是一个字符串或者是数字,一般是一些业务组件. 粒度一般比较粗. 2.Bean的名称 xml配置文件中,id属性 ...

  5. OpenStack基础知识-tox的详解介绍

    1.tox简介 tox是通用的虚拟环境管理和测试命令行工具.tox能够让我们在同一个Host上自定义出多套相互独立且隔离的python环境,每套虚拟环境中可能使用了不同的 Python 拦截器/环境变 ...

  6. 计算机基础知识和tcp详解

    计算机基础知识 作为应用软件开发程序员是写应用软件的,而应用软件必须应用在操作系统之上,调用操作系统接口,由操作系统控制硬件 比如客户端软件想要基于网络发送一条消息给服务端软件,流程是: 1.客户端软 ...

  7. OpenStack基础知识-virtualenv工具详解

    1.virtualenv介绍 virtualenv通过创建一个单独的虚拟化python运行环境,将我们所需的依赖安装进去,不同项目之间相互不干扰,从而解决不同的项目之间依赖不同,造成的冲突问题 2.安 ...

  8. 线程知识-ThreadLocal使用详解

    最近在看Spring的时候回顾了一下ThreadLocal,下面是ThreadLocal的使用说明. 概述 首先,谈到ThreadLocal的使用,我们先来了解一下ThreadLocal是什么?Thr ...

  9. java线程基础知识----SecurityManager类详解

    在查看java Thread源码的时候发现一个类----securityManager,虽然很早就知道存在这样一个类但是都没有深究,今天查看了它的api和源码,发现这个类功能强大,可以做很多权限控制策 ...

随机推荐

  1. iOS学习之MVC模式

    Modal 模型对象: 模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算.例如,模型对象可能是表示商品数据 list.用户在视图层中所进行的创建或修改数据的操作,通过控制器对象传达出去 ...

  2. Three.js基本 Demo

    对于新手来说,几个简单的例子非常实用,偶然发现几个不错的Demo,分享给大家! Three.js基本 Demo 1.最基本的Hello World:http://stemkoski.github.io ...

  3. 一维码生成 c# winform GUI

    最近看到同事小红在做一维码,感觉挺好玩,于是就在网上找了一个例子来玩玩. 下面的代码均为网上的代码,做了一些整理,但是忘记了出处,原作者看到可以提醒我,谢谢. 首先,一维码的相关知识可以先百度一下:h ...

  4. winform中listview imagelist问题

    参考:http://www.it165.net/pro/html/201410/23603.html 关于imagelist失真问题: 1.颜色 将ColorDepth属性设置成Depth32Bit ...

  5. WKWebView

    按错了...,原帖地址http://blog.csdn.net/cyforce/article/details/37657009 webkit使用WKWebView来代替IOS的UIWebView和O ...

  6. 在Web大作业——红十字会管理系统里出现的一个Error

    工程描述:根据用户在前端网页的操作对后台数据库进行查询或更新. 错误描述:当对网页进行多次操作后,网页会报错:“数据库超过最大连接数”. 错误分析:每次打开某一网页,都会运行一段JAVA代码连接数据库 ...

  7. SQL Server如何编辑超过前200行的数据

    从SQL Server 2008开始,微软为了提高查询效率等原因,右键点击表时弹出菜单中默认没有"显示所有行",而以"选择前1000行"替代.这有时会为我们带来 ...

  8. MAC下如何显示隐藏文件

    1.在终端上输入以下命令 defaults write com.apple.finder AppleShowAllFiles -bool true 2.重新启动Finder Command + Opt ...

  9. Where与Having的区别

    地球人都知道,Where关键字的作用是过滤,选取符合条件的记录,而Having关键字的作用则是,为聚合结果指定条件.但是,在某些条件下,使用这两者可以得到一样的结果. 比如以下的例子: ) FROM ...

  10. 联合(union)类型有哪些使用场景

    2013-08-22 - 18:17:50  by Gold_Lion 今天突然碰到“联合”这个数据类型了,平时用的不多,实在也想不出来它到底能帮我干嘛?于是google了一下,终于有一个是利用联合( ...