协议定义
由图可知, TLS协议从在TCP协议建立连接完成之后, 然后开始TLS握手协议;由图可知,TLS 握手阶段经历 ClientHello, ServerHello,Certificate, ServerHelloDone, ClientKeyExchange, ChangeCipherSpec阶段; 那么TLS 协议格式是什么样的?又是完成传输安全的目标的?
ContentType | |
十六进制 | 十进制 | 含义 | |
0×14 | 20 | ChangeCipherSpec | |
0×15 | 21 | Alert | |
0×16 | 22 | Handshake | |
0×17 | 23 | Application | |
0×18 | 24 | Heartbeat | |
Version | |
十六进制 | Major | Minor | 含义 | |
0x0300 | 0x03 | 0x00 | SSL 3.0 | |
0x0301 | 0x03 | 0x01 | TLS 1.0 | |
0x0302 | 0x03 | 0x02 | TLS 1.1 | |
0x0304 | 0x03 | 0x04 | TLS 1.3 | |
TLS 采用非对称加密和对称加密结合的方式保证传输安全, 它以非对称加密的方式产生对成加密的临时密钥
TLS Handshake protocol MessageType | |
十六进制 | 十进制 | 含义 | |
0x00 | 0 | HelloRequest | |
0x01 | 1 | ClientHello | |
0x02 | 2 | ServerHello | |
0x04 | 4 | NewSessionTicket | |
0x08 | 8 | EncryptedExtensions | |
0x0b | 11 | Certificate | |
0x0c | 12 | ServerKeyExchange | |
0x0d | 13 | CertificateRequest | |
0x0e | 14 | ServerHelloDone | |
0x0f | 15 | CertificateVerify | |
0x10 | 16 | ClientKeyExchange | |
0x14 | 20 | Finished | |
抓包分析
ClientHello
- Random: 客户端随机数
- Cipher Suites: 供服务端选择的加密算法列表
ServerHello
- Random: 服务端随机数
- Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
Certificate
Server Key Exchange
Client Key ExChange
New Session Ticket
证书
X.509
X.509 是公钥基础设施(PKI)的标准格式。 X.509证书就是基于国际电信联盟(ITU)制定的X.509标准的数字证书。X.509证书主要用于识别互联网通信和计算机网络中的身份,保护数据传输安全。证书是个好东西,就是贵!!
证书链
根认证机构的建立
单级认证机构证书签署
二级及以上认证机构的建立
由图可知,证书签署的流程是
根证书 --> 二级证书--> 三级证书 --> ..... --> 服务器证书
它是一条完整的链,称之为 "证书链"
证书品牌
系统内置信任证书
申请Let’s Encrypt 证书
// 通过DNS验证域名所有权,申请通配符证书
certbot certonly --manual --preferred-challenges dns -d *.richard.pub -d richard.pub --server https://acme-v02.api.letsencrypt.org/directory
查看证书
certbot certificates
参考
Transport Layer Security Wikipedia
|