SSL安全证书-概念解析
2016-09-17 14:33
363 查看
一、关于证书
数字证书是一种认证机制。简单点说,它代表了一种由权威机构颁发授权的安全标志。由来
在以前,传统网站采用HTTP协议进行数据传输,所有的数据几乎都用的明文,很容易发生隐私泄露。为了解决安全问题,大家开始考虑采用加解密的方案,于是乎诞生了公钥加密(非对称加解密)及签名算法。浏览器从服务端得到公钥,经过协商并生成动态密钥,此后所有的请求响应都基于动态密钥加解密。然而对于浏览器而言,是不是所有声称了 HTTPS 的服务器都值得信任呢。答案是否定的,服务器必须提供一个凭证以证明自己值得信任,于是乎这就有了证书,通常的证书里面则包含了公钥。浏览器与服务器进行加密数据传输的前提是服务器证书受到信任,即存在于浏览器的受信任证书列表中。二、PKI - 公钥基础设施
Public Key Infrastructure,是基于公开密钥技术所构建的,用以解决网络安全问题的通用基础平台。其服务范围包括公钥管理、提供认证、加密、完整性和可追究性服务。PKI 几乎可以代言整个公钥技术体系标准。从概念上,PKI 涵盖了 PMI (权限管理),然而实质上 PKI 不仅如此,目前只要是基于公钥技术实现网络安全的所有协议、组件、服务等都从属于 PKI,包括上述的证书。
PKI 的关键元素:
1 数字证书 Certificate2 证书签署机构 CA 及批准机构 RA
3 存储目录
4 证书策略、证书路径及使用者
三、CA - 证书授权中心
Certificate Authority,CA 是负责发放并管理数字证书的第三方权威机构,它负责管理 PKI 体系中的所有组织、个人、以及他们持有的的数字证书,将用户的公钥及用户的其他信息捆绑在一起,在网上验证用户的身份。CA机构的数字签名使得攻击者不能伪造和篡改证书。CA 的层级结构
CA建立自上而下的信任链,下级CA信任上级CA,下级CA由上级CA颁发证书并认证如github的证书层级:
CA 的功能:
证书颁发:接收、验证及受理用户(包括下级认证中心和最终用户)的数字证书的申请。证书更新:认证中心可以定期更新所有用户的证书,或者根据用户的请求来更新用户的证书
证书查询:查询当前用户证书申请处理过程;查询用户证书的颁发信息,这类查询由目录服务器LDAP来完成
证书作废:由于用户私钥泄密等原因,需要向认证中心提出证书作废的请求;证书已经过了有效期,认证中心自动将该证书作废。认证中心通过维护证书作废列表 (Certificate Revocation List,CRL) 来完成上述功能。
证书的归档:证书具有一定的有效期,证书过了有效期之后就将作废,但是我们不能将作废的证书简单地丢弃,因为有时我们可能需要验证以前的某个交易过程中产生的数字签名,这时我们就需要查询作废的证书。
来源:
四、Certificates 数字证书
主要构成
申请者信息;申请者公钥;
签发机构CA及数字签名
证书有效期
证书标准
x.509 是PKI 体系中最基础的标准,它最先定义了公钥证书的基本结构:SSL公钥证书
证书废除列表CRL(Certificate revocation lists)
PKCS#12
windows 平台及 mac平台使用的证书标准,通常使用 pfx/p12 作为文件扩展名,
该标准在X509的基础之上增加了私钥及存取密码。
编码格式
PEM - Privacy Enhanced Mail, BASE64编码,可读Apache和Unix/Linux 服务器采用的编码格式.
DER - Distinguished Encoding Rules,二进制格式,不可读.
Windows 服务器采用的编码格式.
文件扩展名
pem/der 数字证书,编码格式与其名称对应;crt 数字证书,常见于unix/linux系统;
cer 数字证书,常见于windows系统;
key 非证书,一般是公钥或私钥文件;
csr certificate signing request,证书签名请求文件;
pfx/p12 - predecessor of PKCS#12,是PKCS#12 标准的证书文件,
同时包含了公钥和私钥,存取时需提供密码,采用DER 编码
五、样例
获取github 证书
使用chrome 打开 https://github.com/ ,点击链接左边的 区域可看到信息面板:找到证书信息,导出详细信息
证书内容
相关文章推荐
- Android拓展系列(5)--CyanogenMod源码下载和编译(Android ROM定制基础篇)
- JavaScript编写一个简易购物车功能
- 请罗列Linux发行版的基础目录名称命名法则及功用规定
- 【第三周】第三章习题3.5
- C++学习笔记02之三大函数和栈,堆与内存管理
- 简单的自定义View-仿SlideMenu
- [程序猿初养成]Coursera-C程序设计进阶-第二周作业-编程题#2
- Zigbee HA 框架学习笔记
- 如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
- 主席树(可持续化线段树)
- android开发之Notification(一)
- Unreachable statement错误
- Android 第三方ROM CyanogenMod 源码下载,编译,刷机
- hibernate *.hbm.xml文件的配置
- CyanogenMod源码下载和编译
- 求数组中第k大的数(分治法)
- DAC使用基本准则
- jQuery基础 (一)——样式篇(认识jQuery)
- 网易笔试题:地牢逃脱
- leetcode 91. Decode Ways 解题报告