Openssl 未定义符号:SSLv2\u客户端\u方法
我正在尝试将openssl-1.0.1e更新为1.0.1s。这是源代码编译。在我完成以下步骤之后Openssl 未定义符号:SSLv2\u客户端\u方法,openssl,Openssl,我正在尝试将openssl-1.0.1e更新为1.0.1s。这是源代码编译。在我完成以下步骤之后 cd openssl-1.0.1s /配置-共享 制造 安装 apachectl配置测试 我得到一个错误:“httpd:Syntax error在/usr/local/apache2/conf/httpd.conf的第55行:无法将/usr/local/apache2/modules/mod_ssl.so加载到服务器:/usr/local/apache2/modules/mod_ssl.so
/config--prefix=/usr enable shared-no-ssl2
,也是同样的错误。在我安装openssl-1.0.1s之前,我清除了旧版本
有人知道解决办法吗
…未定义的符号:SSLv2\u客户端\u方法
似乎是SSLv2_client_method
和friends被意外地从库的1.0.1和1.0.2分支中删除。请参见2016年3月8日的OpenSSL开发者邮件列表
有人知道解决办法吗
已使用修复。您应该能够使用以下工具手动修补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上的
另外,--prefix=/usr
可能是危险的,因为它通常会破坏使用系统版本库的系统实用程序。有时发行版会应用OpenSSL源代码中不存在的补丁程序(想到Ubuntu)
通常您需要的是--openssldir=/usr/local/..
。它看起来像是您自己构建的Apache,因此您应该能够使用它。您可以获取最新的OpenSSL,在CFLAGS
中包含一个RPATH,构建OpenSSL,将其安装到/usr/local
,然后根据该版本的OpenSSL构建Apache。有关在OpenSSL wiki上的CFLAGS
中添加RPATH可以找到。Hi jww,非常感谢您的建议。在我尝试修补ssl/s2_meth.c后,它起到了作用。 稍后将尝试RPATH。