https

写该篇文档'缘由':

1)每次对各种应用'制作ssl自签名证书'都很苦恼

2)不理解用户'https的交互过程'

3)有了https,还需要http吗?

一    名词概念

(1)指纹

randomart image 是什么

指纹(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证书的机构和组织 --> '证书授权机构'

SSL证书与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)

四    参考博客

数字证书及CA详解

网站如何实现https 

如何创建自签名的 SSL 证书

CA证书

数字证书原理,公钥私钥加密

理解 HTTPS 工作原理

openssl、x509、crt、cer、key、csr、ssl、tls 这些都是什么鬼

CA认证简单介绍与工作流程

 

hash与消息摘要的关系是什么

秒懂Https之CA证书与自签名证书漫谈

CA证书扫盲curl支持http/https方法

通过CURL请求示例详解HTTPS协议

密钥,私钥和公钥的区别

RSA算法原理

阮一峰的网络日志:RSA算法原理(一)

阮一峰的网络日志:RSA算法原理(二)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值