• 吃饭饭
    2019-07-21
    使用MAC直接配置环境变量好像不生效,使用这个指令就可以:/Applications/Google\Chrome.app/Contents/MacOS/Google\ Chrome --ssl-key-log-file=路径/key.log
     2
     1
  • 一步
    2019-07-04
    在 wireshark 配置日志路径的时候,配置的是:(Pre)-Master-Secret log filenam 这个输入框,那其他的输入框代表什么意思呢? 比如: TLS debug file, Pre-Shared-Key
    
     1
  • airmy丶
    2019-10-17
    老师您好!请问该怎么理解这个“可见性”的意思?
    您在视频中说提到了 HTTP/1.1因为是用ASCII编码,对头部和内容都可以很容易的修改。那HTTP/2是用的二进制编码,可见性不那么好。不管是从chrom面板中还是wireshark都可以很清晰的看见请求头部字段。
    我还从Chrome面板中复制了h2的curl请求(不知道这样合不合理)去通过终端请求,结果得到结果如下:
    [root@localhost ~]# curl 'https://http2.akamai.com/demo/h2_demo_frame.html' -H 'authority: http2.akamai.com' -H 'pragma: no-cache' -H 'cache-control: no-cache' -H 'upgrade-insecure-requests: 1' -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36' -H 'sec-fetch-mode: nested-navigate' -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3' -H 'sec-fetch-site: same-origin' -H 'referer: https://http2.akamai.com/demo' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: zh-CN,zh;q=0.9' --compressed -I
    HTTP/1.1 200 OK
    Server: Apache
    ETag: "a36c5bf5b522a6a2bd2842c9cafb76d8:1441001436"
    Last-Modified: Mon, 31 Aug 2015 06:09:25 GMT
    Accept-Ranges: bytes
    Content-Length: 39079
    push: true
    rtt: 127
    ghost_ip: 104.71.159.169
    ghost_service_ip: 23.3.104.110
    client_real_ip: 112.94.43.29
    client_ip: 112.94.43.29
    myproto:
    protocol_negotiation: h1
    Expires: Thu, 17 Oct 2019 01:51:57 GMT
    Cache-Control: max-age=0, no-cache, no-store
    Pragma: no-cache
    Date: Thu, 17 Oct 2019 01:51:57 GMT
    Connection: keep-alive
    Content-Type: text/html;charset=UTF-8
    Accept-CH: DPR, Width, Viewport-Width, Downlink, Save-Data
    Access-Control-Max-Age: 86400
    Access-Control-Allow-Credentials: false
    Access-Control-Allow-Headers: *
    Access-Control-Allow-Methods: GET,HEAD,POST
    Access-Control-Allow-Origin: *
    Strict-Transport-Security: max-age=31536000 ; includeSubDomains

    为啥响应还是HTTP/1.1 ?
    展开

    作者回复: 1、这是因为chrome或者wireshark把二进制报文解析出后,以友好的字符串形式向你展示。在你用chrome时,是看不到Frame细节的,例如weight权重。
    2、你访问的网站既支持http1也支持http2。如果想使curl使用http2,需要加入参数--http2。当然,首先你的curl版本要支持。可参考这篇文章:https://www.sysgeek.cn/curl-with-http2-support/

    
    
  • 霍华德斯塔克
    2019-10-09
    Win10的系统,设置了SSLKEYLOGFILE环境变量,密钥的LOG文件也能生成;Pre-Master-Secret log file也配置了,Wireshark 3和Wireshark 2都尝试过,但是死活还是抓不到HTTP/2的报文,这是怎么回事呀T_T

    作者回复: 如果wireshark不能读取到完整的TLS握手日志,就不能解密TLS。
    1、你可以尝试把LOG文件删除重新生成,再抓包,或者多试几个WEB站点,以使得LOG文件里有完整的日志(默认最大30MB)。
    2、在wireshark里点decode as,设置http2协议。

     1
    
  • Hurry
    2019-07-31
    老师,是不是每个 TCP 连接的建立,TLS/SSL 都会产生一个加密秘钥去加密

    作者回复: 不是,只有应用明确的使用TLS/SSL,才会对TCP上传输的数据加密

    
    
  • WL
    2019-07-12
    请问一下老师我今天注意到wireshark抓取HTTP/2协议报文时,看到HTTP/2的请求和响应之间有大量的TCP和TLS的报文,我不太理解这些报文时做什么用的,我之前的理解是建立好HTTP/2的链接后所有报文都通过HTTP/2发送,所以很不理解这些TCP和TLS的报文有啥用处。

    作者回复: HTTP2是运行在TLS之上的,而这里的TLS是运行在TCP之上的,TCP则运行在IP之上的。为了传递HTTP2报文,多个TLS报文需要握手,一个DATA报文常分解为多个TCP报文传输。
    网络分层,各司其职,可以再回顾下第5课

    
    
  • kissingers
    2019-07-05
    fiddler 也可以解https,代理的机制
    
    
  • 进击的小猿
    2019-07-05
    老师,如果电脑上的某个软件与它的服务端是用h2通信,是不走浏览器的少了一层代理,这时候要如何解密TLS呢?是否可以在本机搭建一个nginx,将请求代理到nginx再转发给服务端,这样就可以拦截到一些信息。

    作者回复: 你是说,nginx作正向代理,软件到nginx是tcp,而nginx到服务器是tls吗?可以的

    
    
  • 一步
    2019-07-04
    我 Mac 系统,配置好 SSLKETLOGFILE 环境变量后 ,指定的对应的文件名称为: .sslkeylogfile, 然后打开新的chrome 窗口后,这个文件是没有内容的,所以配置wireshark 也是没有作用的,这是少操作了吗?

    作者回复: Mac与windows不同,你确认下环境变量,再重启下系统试试

    
    
我们在线,来聊聊吧