什么是SSL
SSL(Secure
Socket Layer),TLS(Transport
Layer Security)用加密算法来确保双方得意安全通信的协议。
版本
- SSL 1.0 (never released)
- SSL 2.0 (by Netscape communications)
- SSL 3.0
(转交给IETF之后变更为TLS,
SSL1.0~3.0版本个协议基本上已经被现代浏览器废弃,不再支持)
- TLS 1.0 (SSL3.1, released in 1999)
- TLS 1.1 (SSL3.2, released in 2006)
- TLS 1.2 (SSL3.3, released in 2008)
各个平台上的SSL/TLS支持
- Windows:
- 的SSL/TLS协议支持,由SCHANNEL组件提供,既系统层面提供。
SSL中的几个概念
- SSL握手(协商协议版本)
- Cipher Suite(加密通信)
- encryption protocol(DES,RC4,AES)
- encryption key length(48,50,128bit)
- hash algorithm(SHA,MD5)
- SSL证书(基于数字证书来做身份识别)
- Issuer:数字证书签发机构(CA)。
- expired:有效期。
- Subject:站点的名称。
- SNI:请求证书时,服务器并不知道客户端要访问哪个域名(虚拟主机),SSLv3/TLSv1及其以后的版本,支持在请求证书时附带主机名称。
Language Binding
不同的language都有自己的openssl依赖,openssl版本不同,可能导致访问目标的ssl
based serivce出现问题。
- GoLang
- Python
SSL Checking
-
握手阶段完成
-
Weak ciphers(劫持攻击)
-
检测目标的ssl/tls版本(溢出攻击)
- //TODO
-
-
证书有效性
-
名称匹配
-
过期
-
Trusted CA
-
- owasp给的参考标准
- 扫描器检测:
- nmap
- nessus
- openssl检测
- openssl s_client -connect host:port -ssl2
- openssl s_client -connect host:port -ssl2
- openssl s_client -connect host:port -tls1
- openssl s_client -connect host:port -tls1_1
- openssl s_client -connect host:port -tls1_2
基本上这些本地的扫描工具都依赖本地安装的openssl,确保使用最新版本的openssl。
openssl版本的选用可以参考官方给出的建议 。
- Version 1.1.0 支持到 2018-08-31。
- Version 1.0.2 支持到 2019-12-31 (LTS)。
- Version 1.0.1 支持到 2016-12-31。
- Version 1.0.0 , 0.9.8 已放弃支持。
建议使用1.0.0以上版本。
传输层加密
劫持攻击
//TODO