Vlad Borovcov
написал 26 апреля 2008 года в 07:29 (7424 просмотра)
Ведет себя
как благородный джентельмен; открыл 35 тем в форуме, оставил 70 комментариев на сайте.
Доброго времени суток!
Может кто-нибудь подробно или популярно рассказать, как в Apache с подключенным модулем mod_ssl сделать, чтобы работает ssl, тоесть можно было бы обращаться к сервере через HTTPS?
Значую, что MAN-ы рулез форева, но не могу разобраться всё равно(
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Для начала уточняющий вопрос: о каком Индейце идёт речь?
443 порт слушается?
extra/httpd-ssl.conf подключен (для 2.0 и 2.2)?
Как пускаешь? Для 1.3 вместо apache start следует говорить apache startssl.
А ещё можно потешить самолюбие саморекламой :) Не совсем то, что спрашивается, но тема вопроса также раскрыта (если не предполагается доступ по обычному протоколу http, то нефиг слушать 80-й порт!)
<font color=«blue»>www.nixp.ru/articles/freebsd_apache_php_oracle_v2</font>
И устаревшая и носящая скорее исторический интерес (хотя нет, вру, не только исторический) версия:
<font color=«blue»>www.nixp.ru/articles/freebsd_apache_php_oracle</font>
Честно говоря никак не пускаю пока что. Нашел кучу манов на www.opennet.ru.
не помогло. Я просто не разу этого не делал.
Есть сервер, виртуальный, на нём стоит Linux Gentoo, есть доступ по SSH, Webmin, Usermin, FTP.
Но толку от этого мало.
Можешь посоветовать какой-нибудь мануал, написанный мягко говоря, для идиотов, чтобы всё было понятно? например, какую-нибудь пошаговую инструкцию.
А, хочу добавить, на сервере уже болтается 37 виртуальных хостов HTTP, FTP, но HTTPS нужно сделать только для одного из них, естественно, не нарушив работу остальных.
Мнение о качестве материалов на opennet’е изрядно завышено относительно действительности.
Ну ты бы хотя бы на прямые вопросы отвечал бы что ли…
Gentoo => ожидается 2.2.
Инструкций для домохозяек нет и не предвидится.
Если Apache 2.2, и Gentoo…
То сначала надо понять как там оно всё сделано.
Конфиги в студию.
А также — читать первую из приведённых статей и генерить сертификаты.
прочитал статей. Поставил пакет openssl, сгенерировал сертификат и ключ.
Дальше, насколько я понял, нужно где-то прописать директиву listen 443, но где?
Ты так и не понял сути задачи.
Далее тебе медитировать над выводом
После чего привести листинг
И сказать для какого виртуального хоста нужно сделать доступ по SSL и какой доступ делаем (т.е. оставляя доступ по HTTP или запрещая его, проводя проверку клиентского сертификата или не проводя).
/etc/apache2/:
4vhosts.conf
apache2-builtin-mods
magic
webalizer.conf
access.conf
httpd.conf
modules.conf
modules.d
vhosts.d
—————————
vhosts.d: там есть, но не то что нужно.
Все виртуальные хосты почему то были засунуты вебмином в httpd.conf:
NameVirtualHost *:80
…
…
…
ServerName itc-labs.ru
ServerAlias www.itc-labs.ru
DocumentRoot /home/itc/public_html
ErrorLog /home/itc/logs/error_log
#CustomLog /home/itc/logs/access_log combinedScriptAlias /cgi-bin/ /home/itc/cgi-bin/
CustomLog /home/itc/logs/access_log_for_stat combined
Options Indexes IncludesNOEXEC FollowSymLinks
allow from all
AllowOverride All
allow from all
…
…
…
SSL (HTTPS) нужно сделать только для домена itc-labs.ru, но при этом:
то, что лежит в корне сервера, должно работать также как работало. В папке с веб-содержимым есть php скрипты, некоторые из которых должны работать только через HTTPS.
Тяжело ли такое реализовать?
Еблан разворачивавший сервер явно не в курсе философии Gentoo.
Его к этому серверу нельзя было подпускать на пушечный выстрел.
Короче, для того, чтобы сделать этот виртальный хост SSL, тебе нужно:
1. В основной части конфига httpd.conf добавить
(если там такого нет)
2. В секции определяющей конкретный целевой вирутальный хост прописать
3.
Сделал…
апач пускается нормально.
Если зайти на сайт по 80 порту, то всё в порядке. Если ломиться по https, то вижу следующее:
Ошибка при установлении защищённого соединения
При соединении с itc-labs.ru произошла ошибка.
SSL получило запись, длина которой превышает максимально допустимую.
(Код ошибки: ssl_error_rx_record_too_long)
Ещё бы не пускался.
Кстати, я забыл процитировать рекомендованный к объявлению httpd-ssl.log
Хуйня полная.
После внесения указанных изменений по 80-му порту он тебя вообще не должен был пустить.
443 порт он у тебя слушает (в linux — netstat, точный формат команды навскидку не приведу)?
В логах чего-нибудь интересное на этот счёт пишет?
Помнится, ещё во времена 2.2.4 была какая-то муть с SSL и разруливанием вирутальных хостов по именам.
Попробуй обратиться по https с указанием IP-адреса.
http://itc-labs.ru — работает
https://itc-labs.ru — не работает, ошибка (текст ошибки в предудыщем посте)
http://itc-labs.ru:443 — работает, но говорит Forbidden. => на 443 порту сервер слушает.
<font color=«blue»>В переводе «SSL_ERROR_RX_RECORD_TOO_LONG» означает</font> (она же — ошибка -12263):
Что-то до боли знакомое… Вот только навскидку не припомню что.
Давай конфиг виртуального хоста и что есть в основном применительно к SSL!
1. — работать не должен.
2. — похоже вспомнил: попытка установления SSL-соединения с адресом не поддерживающим SSL.
3. — правильно. Ты же пытаешься обратиться по http на порт https].
в директории modules.d есть файл 40_mod_ssl.conf.
Его содержимое:
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
SSLPassPhraseDialog builtin
SSLSessionCache shmcb:/var/run/ssl_scache(512000)
SSLSessionCacheTimeout 300
SSLMutex file:/var/run/ssl_mutex
# vim: ts=4 filetype=apache
httpd.conf:
Include /etc/apache2/modules.d/*.conf
#———————————————--
Listen 443
Timeout 22000
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 1800
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
# Pass Phrase Dialog:
SSLPassPhraseDialog builtin
# Inter-Process Session Cache:
SSLSessionCache dbm:logs/ssl_scache
SSLSessionCacheTimeout 300
#———————————————--
Include /etc/apache2/vhosts.d/*.conf
#NameVirtualHost 89.111.184.165:80
NameVirtualHost *:80
ServerName itc-labs.ru
ServerAlias www.itc-labs.ru
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
#SSLCACertificateFile /etc/ssl/certs/ca.crt
DocumentRoot /home/itc/public_html
ErrorLog /home/itc/logs/error_log
CustomLog /home/itc/logs/access_log_for_stat combined
Options Indexes IncludesNOEXEC FollowSymLinks
allow from all
AllowOverride All
allow from all
Ты хоть конфиг читал???
Не уподобляйся профессорам информатики!!!
Попробуй заменить на
заменить то я попробую заменить. А что сделать чтобы сайт работал и на http и на https?
Уж будь добр, сделай такое одолжение…
А смысл?
Сам же говорил, что не все скрипты работают по http…
+ соображения безопасности.
Просто создаёшь два виртуальных хоста (один ssl, один — обычный) на один DocumentRoot.
ЗЫ: Кстати, ты забыл добавить описание лога запросов SSL. Оно неправильно.
Нет. Надо всё таки сделать чтобы и на HTTPS и на HTTP работал сайт. Всё должно работать на HTTP, но там будет два скрипта, для оплаты онлайн. Они должны будут работать в защищённом соединении.
А вот тут я не вполне уверен в том, что ты пошёл правильным путём.
Хм. а можешь посоветовать, где искать, где копать, кроме opennet.ru и google? :)
Скажу хуже: к opennet’у рекомендую относиться с изрядным скепсисом. Ибо качество бОльшей часть материалов там мягко говоря оставляет желать лучшего.
Хм… я всё-таки это сделал! Opennet.ru — must die… со совими статьями и инструкциями…
Оказывается надо было изменить namevirtualhost на *:443.
тогда https работает… потом просто всё полученное скопировал, выключил SSL и сказал слушать на порту 80. получилось два одинаковых хоста, которые юзают одинаковые логи, у которых одинаковая home-директория, только первый слушает на 443 порту и у него включена SSL engine, а другой — на 80 и у него всё как было до внесения настроетк и создания этой темы в форуме…
to Anarchist — большое спасибо за советы :) Это просто я немного тупил…
Я об этом сразу предупреждал :)
ЗЫ: Шурупову: в FAQ? :)))
Кстати, ещё во время всех этих экспериментов обнаружил, отчего можно нарваться на ошибку make_sock при запуске апача.
Если в виртуальном хосте фигурирует директива Listen, с любым параметром, то в глобальной конфигурации её не должно быть вообще, а в других виртуальных хостах — должна…
Или наоборот. Если в глобальной конфигурации есть Listen 80 и Listen 443, но в виртуальных хостах этого уже писать не надо, они и так будут работать на этих портах…