Chinaunix首页 | 论坛 | 博客
  • 博客访问: 125616
  • 博文数量: 51
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-15 16:39
文章分类

全部博文(51)

文章存档

2011年(1)

2010年(1)

2009年(49)

我的朋友

分类: 系统运维

2009-09-09 15:58:37


      今天为了修改一个关于mod_ssl漏洞误报的问题,搭建了一个测试环境,使用的东西都是很老的了。

       准备的东西:
         
              1、apache-1.3.27
              2、mod_ssl-2.8.14-1.3.27.tar.gz
              3、openssl-0.9.8k.tar.gz

       我的环境是Redhat Enterprise Linux 5

       安装过程就不想说了,如果不知道,可以看看mod_ssl解压后的安装说明,或者到mod_ssl的官网,有个example里面有。想记录的是遇到的问题。

     我安装的过程中遇到了两个问题:

第一个问题:
  gcc -c  -I../../os/unix -I../../include   -DLINUX=22 -DMOD_SSL=208114 -DUSE_HSREGEX -DEAPI -DNO_DL_NEEDED `../../apaci` -DSSL_COMPAT -DSSL_USE_SDBM -DSSL_ENGINE -I/root/openssl-0.9.8k/include -DMOD_SSL_VERSION=\"2.8.14\" ssl_engine_pphrase.c
ssl_engine_pphrase.c: 在函数 ‘ssl_pphrase_Handle_CB’ 中:
ssl_engine_pphrase.c:493: 错误:‘PEM_F_DEF_CALLBACK’ 未声明 (在此函数内第一次使用)
ssl_engine_pphrase.c:493: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
ssl_engine_pphrase.c:493: 错误:所在的函数内只报告一次。)
make[4]: *** [ssl_engine_pphrase.o] 错误 1
make[3]: *** [all] 错误 1
make[2]: *** [subdirs] 错误 1
make[2]: Leaving directory `/root/apache_1.3.27/src'
make[1]: *** [build-std] 错误 2
make[1]: Leaving directory `/root/apache_1.3.27'
make: *** [build] 错误 2

就是ssl_engine_pphrase.c文件中的PEM_F_DEF_CALLBACK没有定义,所以编译器不知道这是什么玩意,所以报错了。

解决方法: 可以直接修改这个源文件,增加如下代码:
 #ifdef OPENSSL_VERSION_NUMBER
#ifndef PEM_F_DEF_CALLBACK
#define PEM_F_DEF_CALLBACK PEM_F_PEM_DEF_CALLBACK
#endif
#endif

 就这样这个问题就可以解决了。

至于原因网上说的好像是openssl的版本高了导致的。没有研究过这些源码,所以都是拿来主义。

第二个问题:

 虽然解决了上面这个问题,但是到最后,编译没有问题,但是连接的时候出现了问题:
  显示如下。。。
 In function `dlfcn_load'
:dso_dlfcn.c:(.text+0x45): undefined reference to `dlopen'
:dso_dlfcn.c:(.text+0xc4): undefined reference to `dlclose'
:dso_dlfcn.c:(.text+0x102): undefined reference to `dlerror'
 解决办法是修改makefile文件,增加一条 -ldl就可以了。
  
阅读(572) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~