2012-03-25 11 views
6

Anteriormente ejecutaba apache 2.2.20 y openssl 1.0.0e. Instalé el openssl 1.0.1, luego descargué el tarball para apache 2.4.1 y lo instalé apr 1.4.6 & apr-util 1.4.1 con --prefix=/usr/local. He configurado Apache 2 con:Apache 2.4.1 referencia indefinida a `SSLv2_client_method '

sudo ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all 
--enable-deflate --enable-proxy --enable-proxy-balancer --enable-proxy-http 
--enable-rewrite --enable-cache --enable-mem-cache --enable-ssl --enable-headers 
--with-mpm=worker --with-included-apr 

Pero después de ejecutar sudo make consigo un error:

httpd-2.4.1/support/ab.c:2227: undefined reference to `SSLv2_client_method' 

lo que está causando este error y cómo lo corrijo?

Respuesta

5

Puede haber creado openssl con SSLv2 deshabilitado, algunas distribuciones tienen esa función deshabilitada (Debian, a partir de 7.0 -Wheezy- es uno). En cuanto a la fuente, parece que si define OPENSSL_NO_SSL2 bandera de preprocesador, apache no llamará a la función SSLv2_client_method().

+1

¿Dónde definiría esa bandera? – arby

+0

No recuerdo cuál es la forma correcta de hacerlo, pero podría simplemente poner un '#define OPENSSL_NO_SSL2' o algo en la parte superior del archivo ab.c. –

2

También puede descargar tarbal de OpenSSL y compilar OpenSSL con

./config shared no-ssl2

Esto establecerá el OPENSSL_NO_SSL2 bandera que Jon Lin mencionó.

4

No tiene nada que ver con la compilación de OpenSSL. PHP es el culpable que está causando el error.

(Nota: El es otro problema con OpenSSL que impida u desde la generación de openssl.so y opencrypto.so bibliotecas compartidas)

Aquí está el resumen de lo que ocurrió. PHP compila su compilación y cuando se da "make install" copia el libphp * .so a/usr/local/apache2/modules.

El código fuente de este error es openssl.c en /usr/local/php-5.5.3/ext/openssl

Así que la solución es sencilla de manejar la situación en el Makefile superior. Mediante la adición de CPPFLAGS = -D_REENTRANT -DTHREAD = 1 -DOPENSSL_NO_SSL2

Hacer que el cambio anterior DESPUÉS se ejecuta el script de configuración. Espero que esto ayude :)

+0

esto solo funciona si el parche se ha aplicado para # 54736, alternativamente puede comentar las secciones en el código fuente –

1

Pruebe con otra versión de Apache. Con Apache 2.2.15 el error estuvo presente, pero cuando cambio a Apache 2.2.27 la "referencia a` SSLv2_client_method" error simplemente desapareció

La línea de compilación es:

./configure --with-ssl --enable-ssl 

eso es todo.