TLS
约 1 分钟阅读
- TLS - Transport Layer Security
- ECH - Encrypted Client Hello
- ESNI - Encrypted SNI
- ESNI -> ECH
- SNI - Server Name Indication
- Redis 支持 TLS
redis-cli -u "rediss://default:[email protected]:443" --sni redis.example.com info
- Postgres 17 支持 TLS
- PG17 支持
?sslnegotiation=direct&sslmode=require- alpn postgresql
- www.postgresql.org/docs/17/protocol-flow.html
- 旧版本 应用层实现的 SSL
- PJJDBC v42.7.4
- pgjdbc/pgjdbc/pgjdbc/src/main/java/org/postgresql/PGProperty.java#L696GitHub Filepgjdbc/pgjdbc/pgjdbc/src/main/java/org/postgresql/PGProperty.java#L696
- PG17 支持
- SSH 不支持 TLS
- 使用的应用层协议
- docs.kernel.org/networking/tls.html
- 不支持 TLS 的可以使用 stunnel/frp 等 tunnel - 但是需要额外运维
ClientHello
ClientHello 是明文的
- 协议版本 (Version) - 指明客户端期望使用的 TLS 协议版本(例如 TLS 1.2、TLS 1.3)
- 随机数 (Random) - 32 字节随机数据,用于生成会话密钥,其中可能包含时间戳等信息
- 会话 ID (Session ID) - 用于标识可复用的会话,方便后续会话恢复
- 密码套件 (Cipher Suites) - 客户端支持的加密算法组合列表,供服务器选择合适的套件
- 压缩方法 (Compression Methods) - 客户端支持的数据压缩算法(通常仅包含"无压缩"选项)
- 扩展 (Extensions) - 包含各种可选扩展:
- SNI(服务器名称指示)
- ALPN(应用层协议协商)
- 支持组(支持的椭圆曲线等)
- 签名算法
- Key Share(用于 TLS 1.3 密钥交换)
- 支持版本(用于协商实际使用的 TLS 版本)等
关联信息
反向链接和本文引用的外部资料。
References
GitHub
1 条- pgjdbc/pgjdbc/pgjdbc/src/main/java/org/postgresql/PGProperty.java#L696github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/PGProperty.java
Wikipedia
2 条- Cipher suiteWikipedia:Cipher suite
- Comparison of TLS implementationsWikipedia:Comparison of TLS implementations
其他外链
7 条- akshayranganath.github.io/OCSP-Validation-With-Opensslakshayranganath.github.io/OCSP-Validation-With-Openssl
- badssl.combadssl.com/
- docs.kernel.org/networking/tls.htmldocs.kernel.org/networking/tls.html
- subtls.pages.devsubtls.pages.dev/
- www.howsmyssl.comwww.howsmyssl.com/
- www.postgresql.org/docs/17/protocol-flow.htmlwww.postgresql.org/docs/17/protocol-flow.html
- www.ssllabs.com/ssltest/viewMyClient.htmlwww.ssllabs.com/ssltest/viewMyClient.html