PKI/CA与数字证书
认识SSL
SSL(Security Sockets Layer 安全套接层)是Netscape公司提出的安全协议,利用数据加密、身份验证和消息完整性验证机制,为网络上数据的传输提供安全性保证。SSL及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
SSL的能做什么:
数据加密
身份验证
消息完整性验证
解决的问题:
1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
2)加密数据以防止数据中途被窃取;
3)维护数据的完整性,确保数据在传输过程中不被改变。
CA、根证书与数字证书
网络安全无疑是现阶段互联网发展最大的问题,数字证书是解决这个问题的一个绕不开的办法,不管是ActiveX插件还是https都需要用到数字证书。
基本概念
- CA(Certificate Authority)被称为证书授权中心,是数字证书发放和管理的机构。
- 根证书是CA认证中心给自己颁发的证书,是信任链的起始点。用户安装根证书意味着对这个CA认证中心的信任。
- 数字证书颁发过程一般为:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息(CSR)传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。
CSR
定义:CSR是Certificate Signing Request的英文缩写,即证书签名请求文件。
缘由:我们想要证明我们的网站是可信的,数据传输是加密的,我们就需要由第三方CA机构颁发的证书来证明,比如Symantec,GeoTrust等等。而想要申请这样的证书,我们的第一步就是需要生成我们自己的CSR文件。
来源:CSR是证书申请者在申请数字证书时由CSP(加密服务提供者)/工具 在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。
CSR需要由申请人提供域名、公司名称、部门、省份、城市、国家借助相关工具生成,工具同时会生成证书请求文件和私钥文件,其中的证书请求文件就是CSR文件,这两个文件是相互匹配的,我们将CSR文件提交给CA申请证书,经过CA身份对申请者身份进行审核后,颁发证书公钥,申请人收到证书文件后,将证书公钥文件配合私钥文件转化成服务器对应的格式的文件部署在HTTP服务器上面,这样我们的网站就可信了。
文件:
1、CSR是以-----BEGIN CERTIFICATE REQUEST-----开头,-----END CERTIFICATE REQUEST-----为结尾的base64格式的编码。将其保存为文本文件,就是所谓的CSR文件。
2、证书文件
一般状况下,做为文件形式存在的证书通常有三种格式:算法
- 第一种:带有私钥的证书,由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以.pfx做为证书文件后缀名。
- 第二种:DER Encoded Binary (.cer) 二进制编码的证书,证书中没有私钥,DER 编码二进制格式的证书文件,以.cer做为证书文件后缀名。
- 第三种:Base64 Encoded(.cer),Base64编码的证书,证书中没有私钥,BASE64 编码格式的证书文件,也是以.cer做为证书文件后缀名。
由定义能够看出,只有pfx格式的数字证书是包含有私钥的,cer格式的数字证书里面只有公钥没有私钥。
Cer证书只包含公钥信息,若是客户端与网站通讯时须要用到私钥(基本全部须要数字证书的网站都会用到私钥),则cer证书是没法正常访问网站的,网站会提示“该页要求客户证书”。因为cer证书只包含公钥信息,通常只能用于解密使用(解密该公钥对应的私钥加密的数据)。在申请证书的机器上存储了私钥信息,所以,能够把CER证书导入为PFX证书,并能够把PFX证书导出,这样其余机器就能够安装PFX证书了。服务器
Pfx证书既能够导出为pfx证书,也能够导出为cer证书。Pfx证书导出时,会提示是否导出私钥,导出私钥即pfx证书,不导出私钥就是cer证书。若是选择导出私钥,出于安全性考虑,须要指定一个密码来保护该私钥,后续再次导入该pfx证书时,须要提供保护该私钥密码,才能在机器上安装证书。
认证流程
https认证流程:
1、服务器生成一对密钥,私钥自己留着,公钥交给数字证书认证机构(CA)
2、CA进行审核,并用CA自己的私钥对服务器提供的公钥进行签名生成数字证书
3、在https建立连接时,客户端(浏览器)从服务器获取数字证书,用CA的公钥(根证书)对数字证书进行验证,比对一致,说明该数字证书确实是CA颁发的(得此结论有一个前提就是:客户端的CA公钥确实是CA的公钥,即该CA的公钥与CA对服务器提供的公钥进行签名的私钥确实是一对。),而CA又作为权威机构保证该公钥的确是服务器端提供的,从而可以确认该证书中的公钥确实是合法服务器端提供的。
注:为保证第3步中提到的前提条件,CA的公钥必须要安全地转交给客户端(CA根证书必须先安装在客户端),因此,CA的公钥一般来说由浏览器开发商内置在浏览器的内部。于是,该前提条件在各种信任机制上,基本保证成立。
制作自己的根证书及数字证书
通过CA生成数字证书比较很麻烦,而且要收费贵,在公司设备与公司的服务器通信时可以采用自己生成的数字证书,但是需要将数字证书导入到设备中。
制作数字证书工具 makecert : makecert 制作数字证书
数字签名工具SignTool下载【 链接: https://pan.baidu.com/s/1nROzB5qcmrY25E-PlW3mFw 密码: x5jj】
《PKI/CA 与数字证书技术大全》
PKI
1976年 RSA诞生,公钥密码算法
1988 第一个数字证书标准X.509 诞生,进入PKI时代
90年代,国内各省市开始建设CA,基于数字证书的电子交易规范SET诞生
2005年 《电子签名法》生效
2020年1月1日《密码法》正式实施
所有与数字证书相关的各种概念和技术,统称为PKI(Public Key Infrastructure)
PKI为何出现
1、保密通信 催生了 密码技术
传统密码学Vs现代密码学
- 加密对象由 文字书信-> 电报字码 -> 数字化的文本。
- 保密通信 -> 信息安全(包括保密通信、数据加密、数字签名)
- 密码系统的结构称为 密码算法,进行加密/解密操作所需的关键参数成为 密钥。
- 主要密码算法: 对称算法、非对称算法、摘要算法
2、密码技术 推动 密钥管理技术
算法是公开的,所以现代密码学的安全性主要取决于密钥的安全性。
密钥管理:包括
- 密钥产生:为了抵御 穷举攻击和字典攻击,密钥长度应该足够长,密钥复杂度应该足够高。
- 密钥传输:X9.17标准描述了两种密钥(密钥加密密钥和数据密钥),前者一般是通过手工分发,后者是用前者加密后分发。
- 密钥验证
- 密钥更新
- 密钥存储
- 密钥备份:密钥托管在安全的第三方中心、密钥分割保管等方式。
- 密钥销毁
- 密钥有效期:密钥使用时间越长,它泄露的机会就会越大,所以密钥不能无限期使用。
- 密钥使用:由于对称密钥使用时,需要共享密钥,所以在使用时不直接使用共享密钥,而是基于该密钥产生会话密钥,然后使用会话密钥对数据进行加密。
PKI技术基础
PKI之数字证书与私钥(网络身份)
PKI之CA与KMC(管理网络身份证)
PKI之应用(使用网络身份证)
数字证书
数字证书:”网络版的身份证“。
数字证书里面包含:姓名、省份等身份信息,也包含一个公钥。 每个用户都拥有一个数字证书和一个私钥(与数字证书中的公钥配对),数字证书可以公开,但是私钥需要保管,一般是通过USB Key存储,即U盾。
证书规范与格式:
编码格式总结:
- X.509 DER(Distinguished Encoding Rules)编码,后缀为:.der .cer .crt
- X.509 BASE64编码(PEM格式),后缀为:.pem .cer .crt
用途:
解决身份认证问题;
数据加密与完整;
行为抗抵赖等问题
密码算法
数字信封
数字证书格式
X.509 证书的结构是用ASN1(Abstract Syntax Notation One) 进行描述数据结构,并使用ASN1 语法进行编码。
ASN1
更多参考:
pkcs1
RSA Cryptography Specifications
,即 RSA 密码学规范,它在 [rfc8017] 中有详细说明,定义了 RSA 密钥文件的格式和编码方式,以及加解密、签名、填充的基础算法。pkcs8
Private-Key Information Syntax Standard
,即私钥格式相关的标准,它不像 PKCS#1 只支持 RSA,而是支持各种类型的私钥。PKCS#8 私钥文件格式中首尾并未说明私钥算法类型,算法类型在数据中标识。PKCS#8 中的私钥也支持加密。PKCS 使用 ASN.1 定义了密钥的数据结构,并使用 DER 编码规则编码密钥,最终使用 PEM (Base64-encoded DER) 格式将密钥数据存储在密钥文件中。
PKCS#1 首部会标识密钥算法类型,PKCS#8 则是在密钥数据中有字段专门存储密钥算法。
参考资料
数字证书原理【重点】