【问题标题】:undefined symbol: SSLv2_client_method未定义符号:SSLv2_client_method
【发布时间】:2016-06-23 03:46:11
【问题描述】:

我正在尝试将 openssl-1.0.1e 更新为 1.0.1s。是源码编译。在我完成以下步骤后,

  1. cd openssl-1.0.1s

  2. ./config --shared

  3. 制作

  4. 进行安装

  5. apachectl 配置测试

    我收到一个错误为“httpd:/usr/local/apache2/conf/httpd.conf 第 55 行的语法错误:无法将 /usr/local/apache2/modules/mod_ssl.so 加载到服务器:/usr/ local/apache2/modules/mod_ssl.so:未定义符号:SSLv2_client_method"

我也试过./config --prefix=/usr enable-shared -no-ssl2,也是同样的错误。在我安装openssl-1.0.1s之前,我make clean是旧的。

有人知道任何解决方案吗?

【问题讨论】:

    标签: openssl


    【解决方案1】:

    ...未定义符号:SSLv2_client_method

    似乎SSLv2_client_method 和朋友被意外从库的 1.0.1 和 1.0.2 分支中删除。请参阅 OpenSSL 开发人员邮件列表中日期为 2016 年 3 月 8 日的 Issue #4398: BUG / 1.0.2g breaks CURL extension

    有人知道任何解决方案吗?

    已用Commit 133138569f37d149, Retain SSLv2 methods as functions that return NULL 修复。您应该能够手动修补ssl/s2_meth.c

    -# if PEDANTIC
    -static void *dummy = &dummy;
    -# endif
    +SSL_METHOD *SSLv2_method(void) { return NULL; }
    +SSL_METHOD *SSLv2_client_method(void) { return NULL; }
    +SSL_METHOD *SSLv2_server_method(void) { return NULL; }
    

    相关,这不太正确:

    我也试过./config --prefix=/usr enable-shared -no-ssl2

    它的no-ssl2,而不是-no-ssl2。另请参阅 OpenSSL wiki 上的 Compilation and Installation | Configure Options

    另外,--prefix=/usr 可能很危险,因为它通常会破坏使用系统版本库的系统实用程序。有时发行版会应用 OpenSSL 源代码中不存在的补丁(想到 Ubuntu)。

    通常你想要的是--openssldir=/usr/local/...。看起来你自己构建了 Apache,所以你应该可以使用它。您可以获取最新的 OpenSSL,在 CFLAGS 中包含 RPATH,构建 OpenSSL,将其安装到 /usr/local,然后针对该版本的 OpenSSL 构建 Apache。有关在 CFLAGS 中添加 RPATH 的信息,请访问 OpenSSL wiki 上的 Compilation and Installation

    【讨论】:

    • 您好 jww,非常感谢您的建议。在我尝试修补 ssl/s2_meth.c 后它起作用了。稍后将尝试 RPATH。
    猜你喜欢
    • 2019-03-28
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2012-11-07
    • 2012-09-05
    • 2017-06-25
    • 2018-06-19
    相关资源
    最近更新 更多