DTLS握手问题

DTLS握手问题

一. 问题描述:
        Mips 平台 Openwrt 下运行的 AC wtp 握手不成功。而当 AC 运行在 x86 平台 Fedora 下能跟 wtp 握手成功。
Dtls 使用的是 openssl0.8l 版本, mips 平台下使用的是编译好的库。由于平台限制,调试困难。于是准备修改 openssl 源码并编译成库使用。
二. 问题定位:
 
  通过抓取 AC WTP 握手成功与不成功情况下的通信包,比较发现:
不成功情况:
                    ClientHello
                    Verify Request
                    Alert
成功情况:
                    ClientHello
                    Verify Request
                    Client Hello
                    Server Hello
AC 端在发送 Verify Request 后紧接着发送一个 Alert
通过解析 Alert 包内容,并参考 Rfc2246 4346 4347 得出 Alert 信息,如下:
 
0000  01 00 00 00 15 fe ff 00 00 00 00 00 00 00 01 00   ................
0010  02 02 28                                          ..(
 
15 Alert
Feff Version
02 length
02 Fatal 0x01 warning
28 Handshak Failture 40
 
去源码中找 发出 HandshakFailtrue Alert 的语句。
定位到 s3_srvr.c ssl3_get_client_hello(SSL *s)
经测试,发现这段代码有问题:
 
 
网上搜索 SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 发现问题所在,
详见: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=555829
http://bugs.gentoo.org/show_bug.cgi?format=multiple&id=292022
 
三. 交叉编译 openssl 问题
要生成 mips 平台的 openssl 库。
生成 Makefile 文件:
./Configure linux-mips -DB_ENDIAN linux:' mips-linux-gcc'
 
其中: linux :后的部分指交叉编译工具链位置。
 
 

你可能感兴趣的:(职场,休闲,握手,DTLS)