openssl简介以及源码移植的交叉编译和安装

openssl简介

2014年4月8日晚,互联网爆出了又一重量级安全漏洞,即CVE-2014-0160,通俗来讲就是OpenSSL出现了安全漏洞。

    说这个漏洞前,先介绍一下OpenSSL,OpenSSL是一个强大的安全套接字层密码库,很多支付网站等涉及资金交易的平台都用它来做加密工具,比如支付宝,财付通,各种银行网站,那些带有Https网址的网站,都使用了这一套工具。也就是说它是一个保障账户安全的工具,而如今,这个保镖却被爆出自身就有严重漏洞,在https开头网址登录的网站,初步评估有不少于30%的网站中招。

    简单说下攻击者是如何利用这个漏洞的:

OpenSSL的某个模块存在一个BUG,当攻击者构造一个特殊的数据包,满足用户心跳包中无法提供足够多的数据会导致memcpy把SSLv3记录之后的数据直接输出,该漏洞导致攻击者可以远程读取存在漏洞版本的openssl服务器内存中长大64K的数据。

    也就是说,当攻击者得到这64K数据后,就有可能从数据中得到当前用户的用户名,密码,Cookies等敏感信息,更要命的是,这是远程获取的,也就是攻击者只要在自己电脑上提交恶意数据包,就能从服务器上取得这些数据。不要认为区区64K问题不大,问题是攻击者可以反复提交,也就是能源于不断的得到“新的”64K,理所当然的包含了新的用户信息,因为网站的用户也是源源不断的嘛。

防范手段:

    1.网站方面,管理员及时下载OpenSSL补丁,升级OpenSSL1.0.1g,通知用户在升级期间不要登录网站。

    2.用户方面,暂时不要登录各大支付网站,网上银行。等网站通知漏洞已修复再登录。


openssl源码的交叉编译和安装

openssl-0.9.8h补丁文件
在外部模块使用openssl库时,会提供openssl补丁文件.例如:wpa_supplicant 和 hostapd
从官方下载的wpa_supplicant 或hostapd的源码文件中patch文件夹下的openssl-0.9.8h-tls-extensions.patch文件拷贝到openssl-0.9.8h目录下
执行命令:
$ patch -R -p1 < openssl-0.9.8h-tls-extensions.patch

结果显示    patchingfile ssl/s3_clnt.c
    patchingfile ssl/s3_srvr.c
    patchingfile ssl/ssl.h
    patchingfile ssl/ssl_err.c
    patchingfile ssl/ssl_sess.c
    patchingfile ssl/t1_lib.c
    patchingfile ssl/tls1.h
    patchingfile util/ssleay.num

---------------------------------------------------

执行openssl-0.9.8h下的Makefile的编译过程
./config no-asm shared--prefix=~/repository/modules/openssl-install

解释一下这里的参数:config配置脚本,no-asm是在交叉编译过程中不使用汇编代码代码加速编译过程.原因是它的汇编代码是对arm格式不支持的。我试过了,如果没有这个参数,你的交叉编译一定出错。shared生成动态连接库。prefix=路径 就是你的安装目录。安装完成后在这个目录下会有四个文件夹:bin lib includessl。这四个目录非常重要,openssl编程就需要这些目录的配合。配置完成后还要修改Makefile文件。
修改如下:


62 #CC= gcc
 63 CC = arm-hisiv100nptl-linux-gcc
 64 #CFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS-D_REENTRANT -DDSO_DLFCN-DHAV   E_DLFCN_H -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
 65 CFLAG= -DOPENSSL_THREADS -D_REENTRANT-DDSO_DLFCN -DHAVE_DLFCN_H-DOPENSSL_N   O_KRB5 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
 66 DEPFLAG= -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE-DOPENSSL_NO_MD2-DOPENSSL_NO_R   C5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE
 67 PEX_LIBS=
 68 EX_LIBS= -ldl
 69 EXE_EXT=
 70 ARFLAGS=
 71 #AR= ar $(ARFLAGS) r
 72 AR = arm-hisiv100nptl-linux-ar $(ARFLAGS)r
 73 RANLIB = arm-hisiv100nptl-linux-ranlib
 74 #RANLIB= /usr/bin/ranlib
 75 #NM= nm
 76 NM = arm-hisiv100nptl-linux-nm
 77 PERL= /usr/bin/perl
 78 TAR= tar
 79 TARFLAGS= --no-recursion
 80 MAKEDEPPROG= arm-hisiv100nptl-linux-gcc
 81 LIBDIR=lib


即使用交叉编译工具去编译openssl。
修改好了以后执行命令: 
$ make

然后在输入命令: 
$ make install
---------------------------------------------------

出现“POD document had syntax errors at /usr/bin/pod2man line 69. make.”错误,解决办法如下:

$ sudo rm /usr/bin/pod2man

---------------------------------------------------

PS:

在使用openssl库时会遇到编译错误找不到头文件的情况,因为openssl使用的头文件中include时使用的<>形式,需要将头文件和库文件拷贝到系统头文件和库文件的目录中.

建议不要修改引用方式.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值