bind aps ssl порт с другим портом с тем же портом openssl 443

8

У меня есть сервер (база Linux), на котором я установил dotcms, и он работает на порту 80, а openssl на порту 443. Оба запускаются в процессе работы. Недавно я установил Apache на моем сервере. и когда я запустил apache, он застрял, потому что ssl-порт по умолчанию на apache - 443, а apache - 80, оба они уже запущены. Просто для моей задачи я запустил только apache без ssl на порту 90. но я хочу запустить ssl с apache, очевидно, на другом порту. Возможно ли связать apache ssl с таким же openssl?

Мне нужны мои стандартные dotcms в процессе работы, я не могу остановить его в любом случае, я могу только перезапустить мой сервис dotcms, если требуется запуск apache. но мне нужно dotcms и apache, чтобы запустить обе параллели.

см. изображение по этой ссылке (из-за меньшей репутации я не смог загрузить изображение) http://developers89.byethost14.com/images/ssl.png

Вакас Ахмед
источник
1
Предоставляйте информацию в виде текста, а не изображения (изображений) (для чтения, поиска и т. Д.).
Карл Рихтер

Ответы:

17

Да, есть возможность привязать Apache к другому порту и при этом использовать SSL.

Замените Listenдирективы в вашем конфиге apache. Конфиг должен содержать строку вроде

Listen 80
Listen 443

Apache будет прослушивать порты, определенные этими параметрами конфигурации. Замените их, и Apache будет слушать другой порт.

Тем не менее, вам все еще нужно указать Apache, что обслуживать на указанных выше портах. Предположим, вы хотите, чтобы Apache начал прослушивать порт 8080 (обычный) и 4433 (ssl). Затем вам нужно заменить директивы Listen на

Listen 8080
Listen 4433

После этого определите два VirtualHosts на этих портах следующим образом:

NameVirtualHost 0.0.0.0:8080
NameVirtualHost 0.0.0.0:4433

<VirtualHost 0.0.0.0:8080>
    ServerName the.server.name
    ServerAlias *
    DocumentRoot /var/www/plain
</VirtualHost>

<VirtualHost 0.0.0.0:4433>
    ServerName the.server.name
    ServerAlias *
    DocumentRoot /var/www/ssl

    SSLEngine On
    SSLCertificateFile /the/certificate/file
    SSLCertificateKeyFile /the/key/file
</VirtualHost>

Если у вас больше нет определения VirtualHost, вам не нужно включать ServerAliasдирективу (или ServerName, в этом отношении).

Если вы перезапустите Apache, он будет прослушивать 8080 для незашифрованных соединений и порт 4433 для SSL. Убедитесь, что у вас нет старого определения VirtualHost, содержащего неправильный номер порта.

Lacek
источник
Спасибо, порт включен, но при попытке mydomain.com:4433 выдается ошибка «Ошибка соединения SSL»Unable to make a secure connection to the server. This may be a problem with the server, or it may be requiring a client authentication certificate that you don't have.
Waqas Ahmed
когда я пытаюсь включить модуль ssl с помощью этой команды на Linux a2enmod ssl. это дает ошибку: * Restarting web server apache2 ... waiting (98)Address already in use: make_sock: could not bind to address [::]:4433и когда я отключаю этот модуль и перезапускаю, порт apache 4433 работает и сталкивается с ошибкой, выделенной в комментарии выше
Waqas Ahmed
Остановите веб-сервер apache и убедитесь, что экземпляры Apache не работают. Проверьте, открыты ли порты с помощью команды «netstat -napt | grep 4433» (выходных данных не должно быть). Затем запустите a2enmod, чтобы включить модуль SSL. Также убедитесь, что директивы «Listen» появляются в файлах конфигурации только один раз (например, вторая директива «Listen 4433» приведет к ошибке).
Lacek
С Apache 2.4.10 я Invalid ServerName "*" use ServerAlias to set multiple server names.
получаю
Я обновил ответ, поэтому конфиг будет работать и с Apache 2.4. Спасибо за указание на это.
Lacek