写该篇文档'缘由':
1)每次对各种应用'制作ssl自签名证书'都很苦恼
2)不理解用户'https的交互过程'
3)有了https,还需要http吗?
一 名词概念
(1)指纹
指纹(fingerprint):唯一'标识'一台主机,实质就是'公钥'
当你'第一次ssh'连接一台服务器主机的时候,服务器'返回了指纹',让你'确认'指纹是否正确,如果确认无误并且'加入到 know_hosts'里,主机ip和指纹'一一对应'
'根据钥匙生成指纹信息'
ssh-keygen -lf file
之所以用 fingerprint '代替' key
原因:主要是 key 过于长'RSA 算法生成的公钥有1024 位',很'难'直接'比较',所以'对公钥进行 Hash' 生成一个 '128 位'的指纹,这样就方便比较了
openSSH Key 的'指纹'是一个 'MD5 校验和'
(2)公钥和私钥
id_rsa --> '私钥'
id_rsa.pub --> '公钥'
'密钥对': 在'非对称加密'技术中,有两种密钥,分为'公钥和私钥',私钥对所有者持有'不可公布',公钥对'他人'公布
'公钥': 对'数据加密',只能通过'私钥'解密
(3)非对称加密
'对称加密'的算法:DES、 IDEA、 RC2、 RC4、 SKIPJACK、 RC5、 AES 算法
'对成加密'的算法:
1)'DH' 密钥交换算法(是非对称加密的起源)、'RSA' 基于因子分解(应用'范围最广',既能用于'数据加密',也能用于'数字签名')
2)'ElGamal' 基于离散对数
3)'ECDSA' Elliptic Curve Digital Signature Algorithm '椭圆曲线签名算法' --> 'ECC' 椭圆曲线加密
4)'DSA' --> Digital Signature Algorithm '数字签名算法'
(4)邪恶的CA机构
CA: 'Certificate Authority',负责'颁发'CA证书的机构和组织 --> '证书授权机构'
思考:为什么需要CA
① CA证书
思考1:请求者向CA请求ssl证书给CA提交了哪些信息
请求者的'公钥'和请求者的'域名' --> 'ssl证书和域名关联'
证书中心'CA-->第三方'用自己的私钥,对'请求者的公钥'和一些相关信息一起'加密',生成"数字证书"
'浏览器 -->IE、chrome、firefox'内置了很多被'浏览器'信任的证书certificate,这些证书就被成为'根证书'
1)请求者'申请证书者'在认证机构'第三方'CA'注册自己的公钥'
2)'CA'收到请求者的公钥后,会'确认'所收到的公钥是否为'请求者'本人所有
3)'CA'认证机构用'自己的私钥'对请求者的公钥'施加数字签名'并生成证书'数字证书'
结果: '请求者'得到'带有'认证机构'CA'的数字签名的'数字证书'
思考2:ca给请求者的ssl证书信息包含什么
CA证书主要'包含如下信息'
数字证书的'发证机关-->CA'会对自己发放的证书加上'CA自己的数字签名' --> 目的:保证证书'不能被伪造'
- 申请者公钥
- 申请者的信息
- 颁发者(CA)的信息
- 以上信息的数字签名
- 数字签名生成规则:先使用摘要算法,例如SHA256,将以上信息生成摘要,然后CA使用自己的私钥对此摘要加密
"数字签名"(digital signature)和"数字证书"(digital certificate) --> '数字签名'是'数字证书'的一部分
数字证书的'防伪标记-->数字签名'就是'用发证机关的私钥加密'的那段内容
'签名的产生算法':首先-->使用'散列函数'计算公开的'明文信息的信息摘要',然后,采用 CA 的私钥对'信息摘要'进行加密,'密文即签名'
++++++++++++++++++++
'消息摘要' Message Digest
②证书的格式
OpenSSL实现了对证书的'X.509'标准编解码、'PKCS#12格式'的编解码以及PKCS#7的编解码功能
最常见的'数字证书标准'是 X.509
CSR 是'Certificate Signing Request'的缩写,即证书签名请求,这不是证书,可以'简单理解成公钥',生成证书时要'把这个提交给权威的证书颁发机构'
CRT 即 'certificate'的缩写,即'证书'
摘要: 对需要传输的文本,做一个HASH计算,一般采用SHA1,SHA2来获得
签名: 使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名
签名验证: 数据接收端,拿到传输文本,需要确认该文本是否是发送出的内容,中途是否曾经被篡改过。因此用自己持有的公钥进行解密,得到文本的摘要,然后使用与发送方相同的HASH算法计算摘要值,再与解密得到的摘要做对比,发现两者完全一致,说明文本没有被篡改。
③ 原理: 完整交互 A和B
④
⑤
⑥
⑦
⑧
(5)
三 实战(openssl)
四 参考博客
openssl、x509、crt、cer、key、csr、ssl、tls 这些都是什么鬼