Як встановити mod_ssl для Apache httpd?


77

Гаразд

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

На даний момент у мене є два повністю окремі екземпляри Tomcat, які обслуговують дещо різні версії (одну для розробників та одну для демонстраційних версій) мого веб-додатку до двох різних портів:

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

Я успішно (назад в січні) , що використовуються mod_jkдля отримання httpdслужити ті ж екземпляри Tomcat до http://www.example.com:8090/devі http://www.example.com:8090/demo (8090 , тому що я є інший додаток працює на 8080 через Jetty на даному етапі) , використовуючи наступний код 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реж.

Хто-небудь може сказати мені, як mod_sslправильно встановити моє встановлене місце, httpdщоб я міг пройти цю помилку?

Відповіді:


40

Чи існують інші LoadModuleкоманди, що посилаються на модулі в /usr/lib/httpd/modulesпапці? Якщо так, то з вами все буде в порядку, просто додавши LoadModule ssl_module /usr/lib/httpd/modules/mod_ssl.soдо вашого файлу конф.

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


18
В моєму Apache інсталяція mod_ssl.soвідсутня. Виявляється, це окремо від базової установки і знаходилося під пакунком mod_sslу яслах пакету yum. Завантажено за допомогою, yum install mod_sslпотім воно з’явилося в modulesпапці.
ug_

Після складання власного apache 2 я виявив, що mod_ssl.so відсутній. потрібно скомпілювати його знову, з нуля.
frumbert

@ug_ дякую, я підтверджую, що після встановлення модуля він включав модуль, а також додав ssl.confфайл, який має необхідні конфігурації.
Бухгалтер م

104

Я виявив, що мені потрібно ввімкнути модуль SSL в Apache (очевидно, префікс команд, sudoякщо ви не працюєте як root):

a2enmod ssl

потім перезапустіть Apache:

/etc/init.d/apache2 restart

Детальніше про SSL в Apache для Ubuntu / Debian тут .


Які розподільні ОС ви використовуєте?
Нага

2
@Naga a2enmod- зі світу Debian.
Z4 рівень

26

Спробуйте встановити mod_sslза допомогою наступної команди:

yum install mod_ssl

а потім перезавантажте та перезапустіть сервер Apache, використовуючи такі команди:

systemctl reload httpd.service
systemctl restart httpd.service

Це має працювати в більшості випадків.


1
Якщо ви встановите Apache з джерела, тоді yum не зможе його виявити. Натомість він встановить дублікат (застарілу) версію Apache та помістить mod_ssl.so у файли модулів цього Apache.
Mike Flynn 02

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.