2016-10-11 53 views
1

Прошу перекомпилировать mo_ssl с openssl 1.0.2 в SuseSE11SP3. Однако я новичок в Suse, но знаю немного Linux.Как обновить openssl 0.9.8 до 1.0.2 с mod_ssl в Apache 2.2.9

  • ОС: Suse SE11SP3
  • Openssl: 0.9.8j < -Какой поставляется с оригинальной SUSE Linux
  • Веб-сервер: Apache HTTPD 2.2.9

Вот ограничение у меня есть. Я не могу использовать zypper или 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 

Приведенная выше команда создает mod_ssl.so под "apache22/модулей", но когда я 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.

, пожалуйста, помогите мне.

+0

Вы пытались установить 'LDFLAGS = -L/PREFIX/openssl'? – alvits

+0

Благодарим за быстрый ответ. Да. Я пытался. это не сработало. – CharlieSiNB

+0

Сообщите компоновщику, что у вас есть предпочтительный путь. Попробуйте «export CPPFLAGS =» - Wl, -rpath =/PREFIX/openssl:/usr/lib -I/PREFIX/include/openssl ". – alvits

ответ

0

Из-за помощи Alvits, Я могу написать этот ответ в stackoverflow в первый раз.

!! Престижность к Alvits !!

Моя первоначальная задача состояла в том, что мне нужно установить другую версию openssl в локальном директивном каталоге, отличном от system openssl. Но мне нравится делать mod_ssl, который связан с более новым opensl.

Во-первых, я установил openssl с общим вариантом, который я изначально забыл об этом, и mod_ssl не был создан. поэтому будьте осторожны, не забывая об этом.

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

Следующий шаг, я добавил некоторые переменные среды. PREFIX - это мой локальный каталог. При установке используйте вместо имени 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) 

Еще один тим, я действительно ценю Alvits за помощь. без его помощи я не мог зайти так далеко.

+0

Я пытаюсь перекомпилировать apache с последним openssl и застрял на втором шаге, мой apache2 находится в '/ etc/apache2', но у него нет' bin' dir, я запускал 'sudo find/-name apache2 - type d 'command и проверял результаты команды, и ни у каких результатов' find' нет 'apache2/bin' dir, не могли бы вы дать мне, где я могу найти фактическое местоположение' apache2/bin'? – RanPaul