LINUX.ORG.RU

Apache 2.2 + Centos 5.6/ SSL Reverse Proxy

 


1

1

Парни, приветствую! Дано Apache 2.2 Centos 5.6

Надо настроить SSL Reverse Proxy на апаче, но не пойму какой файл редактировать, т.к. не приходилjсь этого никогда делать, да еще под Centos. Инет посмотрел, но не понял чтобы настраивать SSL ReverseProxy надо создавать новый файл в папке etc/httpd/conf.d/ или редактировать имеющийся по этому же пути ssl.conf?

Прокси по 80 порту работает, настройки сделаны в httpd/conf/httpd.conf

Заранее спасибо.

  1. для прокси нужен mod_proxy.so
  2. Лучше делать через virtualhost ну и лучше свой путь добавить в httpd.conf к твоему новому файлу, но если лень разбираться, то в /etc/httpd/conf.d/name.conf
IncludeOptional путь/*.conf
<VirtualHost *:443>
 
    DocumentRoot /var/www/vhost
    ServerName example.com
    ServerAlias *.example.com
....
</VirtualHost>
sanekmihailow ()
Ответ на: комментарий от sanekmihailow

Спасибо, за ответ, думал уж никто не ответит.

Опишу задачу:

Есть апач1 в DMZ, в локалке крутиться другой апач2 который взаимодейсвует с 1с. Надо настроить вроде реверс прокси называется, чтобы апач1 передавал HTTPS запросы на апач2.

1. mod_proxy подключен, проксирование по http работает. 2. name.conf по этому пути у меня нет - /etc/httpd/conf.d/

в httpd.conf вставил секцию

<VirtualHost *:443> <proxy *> Order deny,allow Allow from all </proxy> SSLProxyEngine On SSLCertificateFile /etc/pki/tls/certs/server.crt SSLCertificateKeyFile /etc/pki/tls/private/server.key SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW ServerName srv-fs2 ProxyPass / http://192.168.2.15/ ProxyPassReverse / http://192.168.2.15/ LogLevel warn </VirtualHost>

АААА, сейчас только понял, что наверно сертификат и секретный ключ надо настраивать на апач2, я это делал на апач1, правильно?

alex96 ()
Ответ на: комментарий от alex96

Надо на том, который реверсит, т.е. слушает порт 443 и прописывать путь к сетрификату. Но имхо апач который реверсит на апач, это глупо выглядит. Лучше уж натроить nginx который будет реверсить на апач, такая схема меньше ресурсов будет кушать. Свою первую такую схему я делал по этой статье, для начинающего самое то, потом уже куча обвязок идет.

reverse nginx apache2

sanekmihailow ()
Ответ на: комментарий от sanekmihailow

хочется апач использовать, + по обычному hhtp уже работает. Механизм прокси это пересылка запроса «as-is» в простейшем случае? В такой схеме апач2 будет получать от апач1 зашифрованные запросы, или апач1 их расшифрует?

alex96 ()
Ответ на: комментарий от alex96

Смотри примерно так должно на апаче который реверсит

<VirtualHost *:80>
    ServerName example.com
    RewriteEngine on
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>


<VirtualHost *:443>

	ProxyPreserveHost On
	ServerName example.com
        SSLEngine On
        SSLProxyEngine On
        SSLCertificateFile путь_к_ключу/chain.pem
        SSLCertificateKeyFile путь_к_ключу/privkey.pem


        <Location />
		Require all granted
		ProxyPassReverse http://192.168.1.100:80
        </Location>
        ...
<\VirtualHost>

Если у тебя в локалке 2 апача, то только один из них должен слушать 443 (реверсирующий), иначе могут быть проблемы c согласованием и будут жуткие тормоза с производительность

sanekmihailow ()
Ответ на: комментарий от sanekmihailow

По логам, SSL инициализируется нормально. Т.е. запросы на 443 должны слушаться и соответственно писаться в access логи, но они почему-то пустые,...

[Fri May 17 15:06:36 2019] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)

[Fri May 17 15:06:36 2019] [info] Loading certificate & private key of SSL-aware server

[Fri May 17 15:06:36 2019] [debug] ssl_engine_pphrase.c(469): unencrypted RSA private key - pass phrase not required

[Fri May 17 15:06:36 2019] [info] Configuring server for SSL protocol

[Fri May 17 15:06:36 2019] [debug] ssl_engine_init.c(406): Creating new SSL context (protocols: SSLv3, TLSv1)

[Fri May 17 15:06:36 2019] [debug] ssl_engine_init.c(602): Configuring permitted SSL ciphers [ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW]

[Fri May 17 15:06:36 2019] [debug] ssl_engine_init.c(730): Configuring RSA server certificate

[Fri May 17 15:06:36 2019] [warn] RSA server certificate CommonName (CN) `MantisBT' does NOT match server name!?

[Fri May 17 15:06:36 2019] [debug] ssl_engine_init.c(769): Configuring RSA server private key

[Fri May 17 15:06:36 2019] [debug] ssl_engine_init.c(406): Creating new SSL context (protocols: SSLv2, SSLv3, TLSv1)

[Fri May 17 15:06:36 2019] [notice] Digest: generating secret for digest authentication ...

[Fri May 17 15:06:36 2019] [notice] Digest: done

[Fri May 17 15:06:36 2019] [notice] mod_python: Creating 4 session mutexes based on 256 max processes and 0 max threads.

[Fri May 17 15:06:36 2019] [info] Loading certificate & private key of SSL-aware server

[Fri May 17 15:06:36 2019] [debug] ssl_engine_pphrase.c(469): unencrypted RSA private key - pass phrase not required

[Fri May 17 15:06:36 2019] [info] Configuring server for SSL protocol

[Fri May 17 15:06:36 2019] [debug] ssl_engine_init.c(406): Creating new SSL context (protocols: SSLv3, TLSv1)

[Fri May 17 15:06:36 2019] [debug] ssl_engine_init.c(602): Configuring permitted SSL ciphers [ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW]

[Fri May 17 15:06:36 2019] [debug] ssl_engine_init.c(730): Configuring RSA server certificate

[Fri May 17 15:06:36 2019] [warn] RSA server certificate CommonName (CN) `MantisBT' does NOT match server name!?

[Fri May 17 15:06:36 2019] [debug] ssl_engine_init.c(769): Configuring RSA server private key

[Fri May 17 15:06:36 2019] [debug] ssl_engine_init.c(406): Creating new SSL context (protocols: SSLv2, SSLv3, TLSv1)

[Fri May 17 15:06:36 2019] [notice] Apache/2.2.3 (CentOS) configured — resuming normal operations

alex96 ()
Ответ на: комментарий от sanekmihailow

сейчас такая конфигурация

<VirtualHost *:443>

ServerName srv-fs2

SSLEngine On

SSLProxyEngine On

ProxyPreserveHost On

SSLCertificateFile /etc/pki/tls/certs/server.crt

SSLCertificateKeyFile /etc/pki/tls/private/server.key

SSLProtocol all -SSLv2

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

# ProxyPass / http://192.168.2.15/ # ProxyPassReverse / http://192.168.2.15/

<Location />

Require all granted

ProxyPassReverse http://192.168.2.15/

</Location>

CustomLog test_ssl_access_log combined

LogLevel debug

</VirtualHost>

блин, почему редактор перенос строки удаляет.

alex96 ()
Ответ на: комментарий от alex96

блин, почему редактор перенос строки удаляет.

потому что надо использовать lorcode

он запросы сейчас перенаправляет c апач1 на апач2?, если нет, попробуй

ProxyPass

вместо ProxyPassReverse и отключи дебаг он сейчас не столь важен. добавь еще

ErrorLog test_ssl_error_log warn
sanekmihailow ()
Ответ на: комментарий от sanekmihailow

Приветствую! Если я правильно интерпретировал никнейм, то ты тоже Саша, тески значит )

Посмотрел кто слушает порт

[root@mail ~]# netstat -lntup | grep «httpd» tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 25372/httpd

sudo netstat -lntup | grep ":443"

Пусто, получается 443 порт не слушается?????????

alex96 ()
Ответ на: комментарий от sanekmihailow

в test_ssl_error_log

[Mon May 20 14:37:10 2019] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Mon May 20 14:37:10 2019] [warn] RSA server certificate CommonName (CN) `localhost.localdomain' does NOT match server name!?
[Mon May 20 14:37:10 2019] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Mon May 20 14:37:10 2019] [warn] RSA server certificate CommonName (CN) `localhost.localdomain' does NOT match server name!?
[Mon May 20 14:41:18 2019] [warn] RSA server certificate CommonName (CN) `MantisBT' does NOT match server name!?
[Mon May 20 14:41:18 2019] [warn] RSA server certificate CommonName (CN) `MantisBT' does NOT match server name!?

В error.log
[Mon May 20 14:41:18 2019] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon May 20 14:41:18 2019] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Mon May 20 14:41:18 2019] [notice] Digest: generating secret for digest authentication ...
[Mon May 20 14:41:18 2019] [notice] Digest: done
[Mon May 20 14:41:18 2019] [notice] Apache/2.2.3 (CentOS) configured — resuming normal operations

alex96 ()
Ответ на: комментарий от sanekmihailow

[root@mail ~]# httpd -t
[Mon May 20 15:06:22 2019] [warn] module ssl_module is already loaded, skipping
[Mon May 20 15:06:22 2019] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
Syntax OK

Добавил <IfModule ssl_module> Listen 443 </IfModule>

порт слушается, я заэкспериментировался с conf.d и убрал строку Listen 443 ,вспомнил.
[root@mail ~]# netstat -lntup | grep ":443"
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 26873/httpd

Этого зверя у меня нет - mod_gnutls.c

alex96 ()
Ответ на: комментарий от sanekmihailow

[root@mail ~]# cat /etc/hostname
cat: /etc/hostname: No such file or directory

[root@mail ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
172.21.54.22 softline22.local
82.151.201.188 ekt-demo.softline.ru
192.168.2.29 ODKB-XCH.ODKB.local msmx msmx.odkb.ru msexchange.local
10.1.1.1 msexchange-fake.local

alex96 ()
Ответ на: комментарий от alex96

Наверно проблема в этом - https://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

у тебя хостинг (типа timeweb) или локальный пк? если второе отруби sni в настройках домена или панели управления

Не знаешь, если в апаче убрать прослушивание 443 порта

Как сказал аноним, я обычно вешаю nginx на 80 и 443 порт, а апач на 127.0.0.1:8080, но лучше от апача избавляться, если в нем нет необходимости

sanekmihailow ()
Ответ на: ошибка от sanekmihailow

Сервер наш, торчит в инет, relay почтовый на нем крутиться. Я тестирую в локалке, т.е. по серому ip к нему обращаюсь.

Попробовал на апач2.4 на WinServer , проксирует https нормально.

Придется возвращаться к предлагаемому варианту - ngnix. Подскажите какую версию ставить лучше под Centos 5.6?

alex96 ()
Ответ на: комментарий от sanekmihailow

Приветствую! На циске был закрыт 443 внешний порт, открыли, но дело по ходу не в нем. Попробовал из локалки телнетом подключиться на 443 порт - висит, на 80 порт нормально подключается, в логах видно. Куда копать? Не нашел как сюда файлы конфигов прицепить, как тут это сделать?

Порт слушается [root@mail ~]# netstat -lntup | grep ":443" tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 28074/httpd

alex96 ()
Ответ на: комментарий от sanekmihailow

похоже это все-таки firewall, только как понять тогда строчку что firewall is stopped

Firewall is stopped.
Table: filter Chain INPUT (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all — 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all — 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT) num target prot opt source destination

Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all  — 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp — 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp  — 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah  — 0.0.0.0/0 0.0.0.0/0
5 ACCEPT udp  — 0.0.0.0/0 224.0.0.251 udp dpt:5353
6 ACCEPT udp  — 0.0.0.0/0 0.0.0.0/0 udp dpt:631
7 ACCEPT tcp  — 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
8 ACCEPT all  — 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
9 ACCEPT tcp  — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:123
10 ACCEPT tcp  — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:53
11 ACCEPT tcp  — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
12 ACCEPT tcp  — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
13 ACCEPT tcp  — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
14 REJECT all  — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

alex96 ()
Ответ на: комментарий от sanekmihailow

Спасибо, Саша! В общем дело было в файрволе. Одно из самых первых подозрений было на него, и когда я проверял статус служб, то увидел, что он остановлен и это меня успокоило. А сегодня по косвенным причинам догадался что это он, открыл 443 порт. Ну и на циске открыли заодно доступ из мира.

Теперь осталось настроить доступ по сертификатам. Если что буду писать )

alex96 ()