2016年10月26日星期三

SSL/TLS手册

 

什么是SSL


SSLSecure Socket Layer),TLSTransport 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.1released in 1999
  • TLS 1.1 SSL3.2released in 2006
  • TLS 1.2 SSL3.3released in 2008


各个平台上的SSL/TLS支持


  • Windows
    • SSL/TLS协议支持,由SCHANNEL组件提供,既系统层面提供。


SSL中的几个概念


  • SSL握手(协商协议版本)
  • Cipher Suite(加密通信) 
    • encryption protocolDESRC4AES 
    • encryption key length4850128bit 
    • hash algorithmSHAMD5
  • SSL证书(基于数字证书来做身份识别) 
          证书的有效性检查发生在与HTTPS服务器初始化协商期间。
    • Issuer:数字证书签发机构(CA)。 
    • expired:有效期。 
    • Subject:站点的名称。
    • SNI:请求证书时,服务器并不知道客户端要访问哪个域名(虚拟主机),SSLv3/TLSv1及其以后的版本,支持在请求证书时附带主机名称。

Language Binding

不同的language都有自己的openssl依赖,openssl版本不同,可能导致访问目标的ssl based serivce出现问题。

  • GoLang
  • Python 

SSL Checking

  • 握手阶段完成

    • Weak ciphers(劫持攻击)

    • 检测目标的ssltls版本(溢出攻击)
      • //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