如何在 Apache 2.2.9 中使用 mod_ssl 将 openssl 0.9.8 升级到 1.0.2

2023-12-06

我被要求重新编译mo_sslSuseSE11SP3 中使用 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。

请帮我。


在阿尔维茨的帮助下, 我第一次在 stackoverflow 上写这个答案。

!!感谢阿尔维茨!!

我最初的任务是我需要在本地目录中安装与系统 openssl 不同的不同版本的 openssl。但我喜欢制作链接到较新的 openssl 的 mod_ssl 。

首先,我使用共享选项安装了 openssl,我最初忘记了它并且没有创建 mod_ssl。所以要小心不要忘记它。

cd openssl_source_direcotry
./config -fPIC shared --prefix=/PREFIX/openssl --openssldir=/PREFIX/openssl
make 
make test
make install

下一步,我添加了一些环境变量。 PREFIX 是我的本地目录。 安装时请使用不同的名称而不是前缀。

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/lib:/usr/lib -I/PREFIX/openssl/include/openssl"

下一步是重新编译 apache 服务器。我假设您的服务器上已经安装了 apache 服务器。

./configure --prefix=/PREFIX/apache22 --with-apr=/PREFIX/apache22/bin --with-apr-util=/PREFIX/apache22/bin --enable-so --enable-ssl=shared -with-ssl=/PREFIX/openssl --enable-module=shared CC=/usr/bin/gcc
make install

接下来,进入apache22/modules确认mod_ssl.so是否正确链接。

ldd mod_ssl.so 

        linux-vdso.so.1 =>  (0x00007fff823ff000)
        libssl.so.1.0.0 => /PREFIX/openssl/lib/libssl.so.1.0.0 (0x00007fb3b32d4000)
        libcrypto.so.1.0.0 => /PREFIX/openssl/lib/libcrypto.so.1.0.0 (0x00007fb3b2e8c000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb3b2c3e000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fb3b28c7000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fb3b26c2000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fb3b377d000)

再一次,我真的很感谢阿尔维茨的帮助。没有他的帮助,我不可能走到这一步。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Apache 2.2.9 中使用 mod_ssl 将 openssl 0.9.8 升级到 1.0.2 的相关文章

  • 是否可以在httpd.conf中使用变量

    有没有办法useapache httpd conf 文件中的某种变量 我想定义一个值并在整个块中使用它 如 define myvar somename or whatever the syntax would be alias my pat
  • Apache:“AuthType 未设置!” 500错误

    我已经有一段时间没有使用 Apache httpd Web 服务器了 我正在为一个项目启动本地服务器 当我尝试请求 localhost index html 时 我收到 500 错误 并在错误日志中看到以下内容 Tue Jan 21 09
  • 在 Apache 上设置虚拟主机(XAMPP、Windows 10)

    我尝试使用 XAMPP 为某些本地站点设置虚拟主机 我执行了后续步骤 在 C xampp apache conf extra httpd vhosts conf 中我添加了
  • 升级到 Yosemite 后 Apache 配置损坏

    昨天我升级到 Yosemite 现在我的 Web 开发本地配置不再起作用 我设法在下面设置了一个 userdir Users user public html我可以通过以下方式访问所有网站localhost user websitename
  • 包含哈希标记的目标的 Apache 重写规则

    我正在尝试发出重定向 其中目标包含片段标识符部分 我尝试过这个规则 RewriteRule foo bar cgi script foobar 1 2 R L 但是 那 被转换成 23并且 Web 应用程序无法正确解析此 url 我怎样才能
  • PHP 编译器 openssl 错误

    在提问之前 我必须说我已经tried堆栈和其他地方的每个类似问题都失败了 我无法使用composer因为这个错误 requires ext openssl gt the requested PHP extension openssl is
  • rewrite_mod 已启用,但 .htaccess 不起作用

    我在 Amazon EC2 的 ubuntu 12 04 中使用 apache 2 2 我使用启用了 mod rewrite sudo a2enmod rewrite 并能够看到 apache2ctl M 现在我编写了以下 htaccess
  • 奇怪的 500 内部服务器错误(firebug、php、display_errors、ajax)

    在一页上我正在进行多个 AJAX 调用 所有调用均成功返回响应 但最后一个调用 与其他 ajax 调用无关 返回 500 内部服务器错误作为响应代码 如 firebug 所示 但是 尽管存在错误代码 该 AJAX 调用仍会返回正确的内容 令
  • 解决错误 413 请求实体太大

    我正在从事的项目允许我们的员工将大文件上传到我们的共享主机并获取下载链接 问题是我们的托管拒绝更改共享托管的 LimitRequestBody 还有其他解决方案可以解决 LimitRequestBody 或任何其他方法来完成这项工作吗 有两
  • AH00124:由于可能的原因,请求超出了 10 个内部重定向的限制

    升级我的 Ubuntu 服务器后 我尝试打开我的 WordPress 网站 我在 error log 中收到此错误 AH00124 由于可能的配置错误 请求超出了 10 个内部重定向的限制 如有必要 请使用 LimitInternalRec
  • 使用 apache vhost 配置重定向到新域

    我有一个 apache 虚拟主机配置如下 我想要我所有的请求 somedomain com loadproduct product dell inspiron 15 被重定向到 someotherdomain com dell inspir
  • 在 Windows 中启用 Apache 中的 mod_headers

    我正在尝试配置访问控制允许来源在 Apache 中允许某些域 下面是我的httpd配置
  • 有没有类似Wamp Server的东西? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否有人知道类似WAMP Server 的程序 包含 PHP MySQL Apache 的多合
  • onchange 使用 radioChoice 获取当前值

    我尝试使用 radioChoice onChange 从无线电表单中获取选定的值 但似乎无法真正找到解决方案 onEvent 函数被调用 但从这里我不太确定如何获取该值 Code RadioChoice
  • Apache HtAccess AddHandler 以服务器名或 ip 为条件

    我在 Site5 上托管我的临时和生产服务器 在我看来 Site5 是一个相对较好的托管商 问题不在于它们的质量 而在于与 PHP 版本相关的问题 我们的开发服务器使用的是 PHP 5 3 这是一个很好的版本 5 4 太新了 我们还不想使用
  • PHP SNMP - 找不到模块

    我已启用 SNMP 模块并尝试使用该模块中的功能 我已将 MIBDIRS 环境变量设置为我的 mib 所在的位置 但我仍然收到这些 找不到模块 警告 Cannot find module IP MIB At line 0 in none C
  • PHP、htaccess:在 URL 中应用页面标题

    我想在 URL 中应用页面 HTML 标题 例如 在这里 stackoverflow url 是这样的 http stackoverflow com questions 10000000 get the title of a page ur
  • 与 glib-2.0 链接时,cygwin gcc 4.3 中的参数顺序很重要

    我正在尝试使用 cygwin 编译适用于 os x 和 linux 的代码 然而 我发现 gcc 的参数顺序给出了意想不到的结果 例如 以下情况会失败 gcc std gnu99 I usr include glib 2 0 I usr l
  • 使用 VirtualDocumentRoot 的 SSL 虚拟主机

    我在 ubuntu 16 04 VM 上进行开发工作 当我处理多个项目时 为了让我的生活更轻松 我使用 VirtualDocumentRoot 和主机文件使用 dev 域从我的主文件夹中服务器站点 在 000 default conf 我有
  • 在apache中有条件地设置缓存头

    我想根据访问文件的路径有条件地设置缓存标头 基本上 访问http www example com cache cache key 应该为具有遥远未来缓存标头的文件提供服务 我使用重写规则来设置环境变量 然后尝试根据该变量设置缓存控制标头 然

随机推荐