• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

HTTPS的算法之TLS和SSL基本原理说明和讲解

武飞扬头像
Luke
帮助309

TLS/SSL协议背后的算法

TLS/SSL的关键步骤

1、认证

2、密钥协商

3、数据加密

客户端服务端在连接阶段需要协商出双方都认可的密码套件。密码套件决定了本次连接使用哪一种加密算法、密钥协商算法、HMAC算法

数据加密

非对称加密算法一般比较慢,大部分web应用很少使用非对称加密算法进行加解密运算

唯一可行的方案是采用对称加密算法来对数据进行加密传输,一般是AES、EDS算法

有加密算法的地方必有MAC算法

MAC算法和HASH算法不一样,HASH算法仅能消息完整,不能确保没有被篡改

而MAC算法在生成摘要的时候,使用了双方协商一致的密钥,所以在中间人不知道密钥的前提下,是没有办法生产相同的摘要的

MAC值 = mac(消息, 密钥)

客户端和服务端必须持有相同的AES密钥、HAMC密钥、初始化向量,这些关键值称为密钥块,密钥块是动态生成的,在传输过程中必须是保密的,只有通信双方的客户端和服务端才能知晓,不能泄露

密钥协商

数据传输需要加密,加密数据需要密钥,如何安全传输这些密钥?这时候密钥协商算法就可以出场了。

使用何种密钥协商算法也是由密码套件决定的,不管采用哪种密钥协商算法,客户端和服务端最终都会协商出预备主密钥,预备主密钥转换成主密钥,主密钥最终再转换成密钥块

在HTTPS中,一般采用RSA或者DH算法来协商预预备主密钥

RSA

RSA密钥协商使用非对称加密

密钥协商算法-rsa.drawio.png

DH算法

DH算法在进行密钥协商时,通信双方任何一方无法独自计算出一个会话密钥。

简单概括就是,服务端互相交换DH公钥,使用对方公钥与自身私钥计算出相同的预备主密钥。能计算出相同的预备主密钥的原因是两边DH公私钥由相同DH参数生成

密钥协商算法-dh.drawio.png

认证 PKI

通过RSA或DH密钥协商算法,服务器需要提供一对密钥。如果有中间人将服务端传递给客户端的公钥替换,这样协商算法协商出来的密钥块可以被中间人解密出明文数据。

本质原因是客户端无法确认服务端的真实身份,客户端访问example.com,接收到一个服务端公钥,但无法确认公钥是不是属于example.com。公钥只是一串数字,需要一种手段来认证公钥真正的主人,解决方案就是PKI

PKI技术.drawio.png

证书类型

x509的证书编码格式有两种

1.PEM(Privacy-enhanced Electronic Mail) 是明文格式的 以 -----BEGIN CERTIFICATE-----开头,已-----END CERTIFICATE-----结尾,中间是经过base64编码的内容,apache需要的证书就是这类编码的证书

查看这类证书的信息的命令为 :openssl x509 -noout -text -in server.pem

其实PEM就是把DER的内容进行了一次base64编码

2.DER 是二进制格式的证书

查看这类证书的信息的命令为 :

openssl x509 -noout -text -inform der -in server.der

使用openssl试验

模拟一个证书机构

为该证书机构创建私钥和自签名的根证书

openssl req -x509 -newkey rsa:2048 -nodes -days 365 -keyout rootCA.key -out rootCA.crt
  • -x509 表示我们要对证书进行自签名
  • -newkey 表示我们要为证书创建一个新的私钥,采用2048bit的秘钥长度(也可以指定已有的私钥)
  • -nodes 表示不要使用des对证书进行加密

会生成机构的私钥和根证书。注意证书里是包含公钥的,所以只需要证书和私钥即可

# -rw-r--r--  1 wentao  wheel   1.2K Sep 25 19:51 rootCA.crt
# -rw-r--r--  1 wentao  wheel   1.7K Sep 25 19:51 rootCA.key

.crt 证书文件 ,可以是DER(二进制)编码的,也可以是PEM( ASCII (Base64) )编码的 ,在类unix系统中比较常见

.cer 也是证书 常见于Windows系统 编码类型同样可以是DER或者PEM的,windows 下有工具可以转换crt到cer

.key 一般公钥或者密钥都会用这种扩展名,可以是DER编码的或者是PEM编码的

查看DER编码的(公钥或者密钥)的文件的命令为 openssl rsa -inform DER -noout -text -in xxx.key

查看PEM编码的(公钥或者密钥)的文件的命令为 openssl rsa -inform PEM -noout -text -in xxx.key

证书机构为example.com颁发证书

创建私钥和CSR(证书签名请求)

openssl req -new -nodes -keyout exmaple_com.key -out example_com.csr
​
# -rw-r--r--  1 wentao  wheel   1.0K Sep 25 20:12 example_com.csr
# -rw-r--r--  1 wentao  wheel   1.7K Sep 25 20:12 exmaple_com.key

使用证书机构的私钥、根证书和example.com的CSR创建数字证书

$ openssl x509 -req -in example_com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out example_com.crt
Signature ok
subject=/C=CN/ST=BeiJing/L=BeiJing/O=NNSDAO/CN=www.example.com/emailAddress=liang.w.t@foxmail.com
Getting CA Private Key
​
# -rw-r--r--  1 wentao  wheel   1.2K Sep 25 20:16 example_com.crt
# -rw-r--r--  1 wentao  wheel   1.0K Sep 25 20:12 example_com.csr
# -rw-r--r--  1 wentao  wheel   1.7K Sep 25 20:12 exmaple_com.key

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanefif
系列文章
更多 icon
同类精品
更多 icon
继续加载