Подтвердить что ты не робот

Как установить mod_ssl для Apache httpd?

ОК

Итак, я установил Apache httpd некоторое время назад и недавно вернулся к нему, чтобы попробовать установить SSL и заставить его обслуживать несколько разных серверов tomcat.

В настоящий момент у меня есть два полностью отдельных экземпляра Tomcat, обслуживающих несколько разных версий (один для dev и один для демонстрации), мое веб-приложение для двух разных портов:

  • example.com:8081
  • example.com:8082

Я успешно (назад в январе) использовал mod_jk, чтобы получить httpd, чтобы обслуживать те же экземпляры Tomcat до http://www.example.com:8090/dev и http://www.example.com:8090/demo (8090 cos. У меня есть другое приложение, работающее на 8080 через Jetty at этот этап), используя следующий код в httpd.conf:

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug

<VirtualHost *:8090>
    JkMount /devd* tomcatDev
    JkMount /demo* tomcatDemo
</VirtualHost>

То, что я не пытаюсь сделать, это включить SSL.

Я добавил следующее в httpd.conf:

Listen 443
<VirtualHost _default_:443>
    JkMount /dev* tomcatDev
    JkMount /demo* tomcatDemo
    SSLEngine on
    SSLCertificateFile "/opt/httpd/conf/localhost.crt"
    SSLCertificateKeyFile "/opt/httpd/conf/keystore.key"
</VirtualHost>

Но когда я пытаюсь перезапустить Apache с помощью apachectl restart (да, после закрытия этого другого приложения, о котором я упоминал, он не играет с https-соединениями), я постоянно получаю ошибку:

Неверная команда "SSLEngine", возможно, с ошибкой или определена модулем, не включенным в конфигурацию сервера. httpd не работает, пытается запустить

Я посмотрел в директории httpd/modules и действительно нет mod_ssl, только mod_jk.so и httpd.exp.

Я попытался использовать yum для установки mod_ssl, он говорит, что он уже установлен. Действительно, я могу найти mod_ssl.so в /usr/lib/httpd/modules, но это НЕ путь к тому, где я установил httpd, который является /opt/httpd, и на самом деле /usr/lib/httpd содержит ничего, кроме modules dir.

Может ли кто-нибудь сказать мне, как правильно установить mod_ssl для моего установленного местоположения httpd, чтобы я мог пройти мимо этой ошибки?

4b9b3361

Ответ 1

Существуют ли другие команды LoadModule, ссылающиеся на модули в папке /usr/lib/httpd/modules? Если это так, вы должны просто добавить LoadModule ssl_module /usr/lib/httpd/modules/mod_ssl.so в свой файл conf.

В противном случае вам нужно скопировать файл mod_ssl.so в любой каталог, из которого загружаются другие модули, и ссылаться на него там.

Ответ 2

Я обнаружил, что мне нужно включить модуль SSL в Apache (очевидно, команды префикса с sudo, если вы не используете root):

a2enmod ssl

затем перезапустите Apache:

/etc/init.d/apache2 restart

Подробнее о SSL в Apache для Ubuntu/Debian здесь.

Ответ 3

Попробуйте установить mod_ssl, используя следующую команду:

yum install mod_ssl

а затем перезагрузите и перезапустите сервер Apache, используя следующие команды:

systemctl reload httpd.service
systemctl restart httpd.service

Это должно работать в большинстве случаев.