DTLS握手問題

DTLS握手問題

一.問題描述:
        Mips平臺Openwrt下運行的ACwtp 握手不成功。而當AC運行在x86平臺Fedora下能跟wtp握手成功。
Dtls使用的是openssl0.8l版本,mips平臺下使用的是編譯好的庫。由於平臺限制,調試困難。於是準備修改openssl源碼並編譯成庫使用。
二.問題定位:

 

  通過抓取ACWTP握手成功與不成功情況下的通信包,比較發現:
不成功情況:
                    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
FeffVersion
02 length
02 Fatal 0x01 warning
28 Handshak Failture40

 

去源碼中找 發出 HandshakFailtrue Alert 的語句。
定位到s3_srvr.c ssl3_get_client_hello(SSL *s)
經測試,發現這段代碼有問題:

 

 

網上搜索SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 發現問題所在,

 

三.交叉編譯openssl問題
要生成mips平臺的openssl庫。
生成Makefile文件:
./Configure linux-mips -DB_ENDIAN linux:' mips-linux-gcc'

 

其中:linux:後的部分指交叉編譯工具鏈位置。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章