2012-03-25 40 views
6

Tôi trước đây đã chạy apache 2.2.20 và openssl 1.0.0e. Tôi đã cài đặt openssl 1.0.1, sau đó tải xuống tarball cho apache 2.4.1 và cài đặt apr 1.4.6 & apr-util 1.4.1 với --prefix=/usr/local. Tôi cấu hình apache2 với:Apache 2.4.1 tham chiếu không xác định đến `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 

Nhưng sau khi chạy sudo make tôi nhận được một lỗi:

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

gì đang gây ra lỗi này và làm thế nào để sửa chữa nó?

Trả lời

5

Bạn có thể đã xây dựng openssl với SSLv2 bị vô hiệu hóa, một số bản phân phối đã tắt (Debian, bắt đầu từ 7,0 -Wheezy- là một). Nhìn vào nguồn, có vẻ như bạn định nghĩa cờ OPENSSL_NO_SSL2 tiền xử lý trước, apache sẽ không gọi hàm SSLv2_client_method().

+1

Tôi sẽ xác định cờ đó ở đâu? – arby

+0

Tôi không thể nhớ cách thích hợp để làm điều đó là gì, nhưng bạn chỉ có thể đặt '#define OPENSSL_NO_SSL2' hoặc thứ gì đó ở trên cùng của tệp ab.c. –

2

Bạn cũng có thể tải về tarbal openssl và biên dịch openssl với

./config shared no-ssl2

này sẽ thiết lập OPENSSL_NO_SSL2 cờ mà Jon Lin nói.

4

Nó không liên quan gì đến việc biên dịch OpenSSL. PHP là thủ phạm gây ra lỗi.

(Lưu ý: là một vấn đề khác với OpenSSL mà có thể ngăn chặn u từ tạo openssl.so và opencrypto.so thư viện chia sẻ)

Dưới đây là tổng quan về cách nó đã xảy ra. PHP biên dịch biên dịch của nó và khi "make install" được cho nó sao chép libphp * .so thành/usr/local/apache2/modules.

Mã nguồn của lỗi này được openssl.c trong /usr/local/php-5.5.3/ext/openssl

Vì vậy, giải pháp đơn giản là để xử lý nó ở cấp cao nhất Makefile. Bằng cách thêm CPPFLAGS = -D_REENTRANT -DTHREAD = 1 -DOPENSSL_NO_SSL2

Hãy thay đổi trên SAU bạn chạy các kịch bản cấu hình. Hy vọng điều này sẽ giúp :)

+0

điều này chỉ hoạt động nếu bản vá đã được áp dụng cho # 54736, cách khác bạn có thể nhận xét các phần trong mã nguồn –

1

Hãy thử với một phiên bản Apache khác. Với Apache 2.2.15 lỗi đã có mặt nhưng khi tôi thay đổi để Apache 2.2.27 là "tài liệu tham khảo cho` SSLv2_client_method" lỗi đơn giản biến mất

Dòng biên soạn là:

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

Đó là tất cả.

Các vấn đề liên quan