某个 https
无法播放,通过抓包来分析问题
抓包数据
https(ssl)协议以及 wireshark 抓包分析与解密
ClientHello
ServerHello
从 ServerHello
可以看到服务器使用 TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
加密套件
加密套件
- 服务器选择算法时有两种优先级:客户端优先或服务器优先。客户端优先是根据客户端提供的加密套件,从上到下,看是否有本地支持的;服务器优先是根据自身配置的加密套件顺序,一个个在
client hello
中找 - 服务器配置
ECC 证书
时,加密套件只能选择XXX_ECDSA_XXX
或者ECDH_XXX
- 服务器配置
RSA 证书
时,只能选择RSA_XXX
或者ECDHE_RSA_XXX
形式的加密套件 - 如果加密套件选择
ECDH_RSA
或者ECDH_ECDSA
时,由于ECDH 加密套件
默认表明了握手需要ECC 证书
,第二部分_RSA
和_ECDSA
表明的是想要的服务器证书签名类型
wolfssl
加密套件 TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
名词解释:
ECDH
是基于ECC
(Elliptic Curve Cryptosystems,椭圆曲线密码体制,参看 ECC)的DH
( Diffie-Hellman)密钥交换算法RSA
是一种非对称加密算法- AES256
GCM
SHA384
在 wolfssl
源码中搜索
$ag TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
src/keys.c
739:#ifdef BUILD_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
740: case TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 :
$ag BUILD_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
wolfssl/internal.h
486: #define BUILD_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
打开文件 wolfssl/internal.h
可以查到 TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
依赖于 WOLFSSL_STATIC_DH
、 WOLFSSL_SHA384
、 HAVE_AESGCM
和 HAVE_ECC
定义以上几个依赖宏定义以支持相关加密套件
$ ./autogen.sh
$ ./configure --enable-opensslextra --enable-des3 --enable-dh --enable-ecc --enable-dtls --enable-aesgcm --enable-aesccm --enable-sha512
Ref
- 关于 ECDSA/ECC(密钥加密传输)和 ECDSA/ECDH(密钥磋商)
- [Getting started with wolfSSL`s ECC](https://www.wolfssl.com/getting-started-with-wolfssls-ecc-2/)