Почему на моем сервере отображается openssl 0.9.8, если у меня установлен openssl1.0.1?

Я создаю тестовый сервер, который уязвим для ошибки.

Мой сервер работает под управлением Apache 2.4 на виртуальной машине FreeBSD. По умолчанию во FreeBSD, по-видимому, установлен OpenSSL 0.9.8. Я попытался удалить OpenSSL из портов, но так как я не устанавливал его через порты (пришел по умолчанию), я не мог удалить его таким образом.

Затем я попытался просто проигнорировать это и установил OpenSSL 1.0.1 из исходного кода; но когда я перезапустил сервер apache и проверил сайт, используя curl --head 127.0.0.1 "OpenSSL 0.9.8" был отображен.

Затем я попытался переустановить / перенастроить apache, но тот же тест дал "OpenSSL 0.9.8".

Итак, я попытался заменить OpenSSL по умолчанию следующим образом:
- установил более новый OpenSSL через порты (в попытке заменить версию по умолчанию)
- сделать uninstall-ed установленным через порт OpenSSL(в попытке полностью стереть OpenSSL по умолчанию)
- с моим источником-установкой остался только один, я решил, что это должно было изменить его
- тест все еще дал "OpenSSL 0.9.8"(печаль)

Итак, почему он по-прежнему отображает "OpenSSL 0.9.8"?

Я также хочу изменить веб-сайт на использование OpenSSL 1.0.1, поэтому совет по этому вопросу будет полезен.

2 ответа

Решение

Пропущенный шаг заключается в том, что вы должны сказать системе, что вы хотите использовать OpenSSL из портов через один из базовой системы:

  • собрать OpenSSL из портов:

  • создать / добавить к вашему /etc/make.conf следующая строка:

    WITH_OPENSSL_PORT=yes
    
  • затем переустановите все остальные модули, требующие OpenSSL (devel/apr1, www/apache24...)

  • вы можете проверить библиотеку OpenSSL, используемую apache24 (фактически модуль apache24 mod_ssl):

    # ldd /usr/local/libexec/apache24/mod_ssl.so |grep ssl 
    /usr/local/libexec/apache24/mod_ssl.so:
            libssl.so.8 => /usr/local/lib/libssl.so.8 (0x801634000)
    

    Apache24 mod_ssl теперь использует библиотеку OpenSSL из портов.

Компиляция OpenSSL вам не сильно поможет. Ваш Apache все еще связан со старым OpenSSL. Вы можете проверить это, используя ldd команда.

Вы должны перекомпилировать Apache или mod_ssl чтобы он был связан с вашим новым OpenSSL.

Другие вопросы по тегам