ECDHE_RSA_WITH_AES_128_CBC_SHA256模式下, RSA只用于身份验证, 不用于加密.
加密密钥是通过有限域的椭圆曲线
算法交换的, 需要拿到ECDH的私钥才能解密
本文的demo样本使用了特殊方法来获取这些参数.
椭圆曲线加密原理 https://blog.csdn.net/wzj_whut/article/details/86649809#_68
准备工作
已经准备好的抓包数据
https://github.com/wzjwhut/tlsv12-demo/blob/master/src/main/resources/TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256.pcapng
可以通过以下方式自己抓包实验
下载和修改最新版的openssl源码
修改crypto/dh/ec_key.c
加入一段日志函数
/** 用于打印一段数据内容 */
static const char hexdig[] = "0123456789abcdef";
static void log_hex(const char* tag, unsigned char* data, int len){
char msg[50], *ptr;
int i;
ptr = msg;
printf("%s\r\n", tag);
for(i=0; i<