我被要求重新编译mo_ssl
SuseSE11SP3 中使用 openssl 1.0.2。
不过,我是 Suse 的新手,但对 linux 有一点了解。
- 操作系统:苏塞SE11SP3
- Openssl : 0.9.8j
- 网络服务器:Apache httpd 2.2.9
这是我的限制。我无法使用zypper
or rpm
因为公司安全政策不允许我这样做。这是荒谬的,这里就是这样的。
我的另一个限制是这个系统被其他我没有权限的网络服务器使用。我必须尽可能在本地进行。
我希望它发生的是,当我重新编译 apache 服务器时,我喜欢看到mod_ssl
链接到较新版本的 Openssl 库。
所以,我下载了Openssl 1.0.2h源文件:
./confgiure --prefix=//PREFIX/openssl --opendir=/PREFIX/openssl
make test
make install
成功地,我在本地目录上安装了 openssl。
然后我尝试重新编译已经存在的httpd2.2.9。
所以我去了 httpd 2.2.9 中的源文件
make clean
export LIBS=-ldl
export LD_LIBRARY_PATH="/PREFIX/openssl"
export LIBS="-L/PREFIX/openssl"
export CPPFLAGS="-I/PREFIX/include/openssl"
./configure --prefix=/PREFIX/apache22 --enable-so --enable-ssl=ssl -with-ssl=/PREFIX/openssl --enable-module=shared CC=/usr/bin/gcc
make install
有一些错误,但我想通了并进行编译。然而,
最终结果为mod_ssl
仍然链接到旧的 Openssl 0.9.8 而不是新版本 1.0.2h
在这些步骤中我错过了什么?或者我哪里做错了?
//openssl install
./config -fPIC shared --prefix=/PREFIX/openssl --openssldir=/PREFIX/openssl
make
make test
make install
// install apache2
//recompiling after apache2 is installed with openssl
export LIBS=-ldl
export LD_LIBRARY_PATH="/PREFIX/openssl/lib"
export LDFLAGS="-L/PREFIX/openssl"
export CPPFLAGS="-I/PREFIX/openssl/include/openssl"
export CFLAGS="-Wl,-rpath=/PREFIX/openssl:/usr/lib -I/PREFIX/openssl/include/openssl"
./configure --prefix=/PREFIX/apache22 --enable-so --enable-ssl=shared -with-ssl=/PREFIX/openssl --enable-module=shared CC=/usr/bin/gcc
make
make install
上面的命令在“apache22/modules”下创建mod_ssl.so,但是
当我执行 ldd mod_ssl.so 时,结果如下
linux-vdso.so.1 => (0x00007fffef8f2000)
libssl.so.1.0.0 => not found
libcrypto.so.1.0.0 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffe6a48d000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffe6a116000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffe6a913000)
libssl.so、libcrypto.so 未链接..我不知道我还能在这里做什么来将 mod_ssl.so 链接到不同版本的 openssl。
请帮我。