Рейтинг:0

Сертификат перезаписи прокси-сервера Nginx Revers

флаг cn

У меня проблема с попыткой перезаписать сертификат с использованием NGINX в качестве обратного прокси-сервера, перенаправляющего все запросы на сервер Apache со старым сертификатом (TLS 1.0)

Это вывод для моего файла .conf:

сервер {
слушать 80;
server_name provision.metrotel.com.ar;
вернуть 301 https://provision.metrotel.com.ar$request_uri;
}

сервер {
слушать 443 ssl http2;
server_name provision.metrotel.com.ar;
ssl_certificate /etc/nginx/certs/metrotel.crt;
ssl_certificate_key /etc/nginx/certs/metrotel.key;
журнал_доступа /var/log/nginx/access.log;
журнал_ошибок /var/log/nginx/error_prov.log;
место расположения / {
proxy_pass http://prov.metrotel.com.ar/;
proxy_ssl_certificate /etc/nginx/certs/metrotel.crt;
proxy_ssl_certificate_key /etc/nginx/certs/metrotel.key;

}
}

http://prov.metrotel.com.ar/ это сервер, на котором расположен сайт, и у него есть старый сертификат. Есть ли способ перезаписать этот сертификат, используя тот, который у меня есть в моем обратном прокси-сервере nginx.

Я пробовал несколько вариантов, которые я всегда получаю "NET::ERR_SSL_OBSOLETE_VERSION"


Клиент Chrome включен (172.20.1.4)

Прокси (Nginx на srv-nginx-a.metrotel.local -192.168.151.112)

Серверная часть (prov.metrotel.com.ar) 192.168.59.20

tcpdump: подробный вывод подавлен, используйте -v или -vv для полного декодирования протокола
прослушивание по ens192, тип канала EN10MB (Ethernet), размер захвата 262144 байт

11:50:59.260014 IP 172.20.1.4.19710 > srv-nginx-a.metrotel.local.https: флаги [S], seq 979144705, win 29200, параметры [mss 1460,nop,nop,sackOK,nop,wscale 4 ], длина 0

11:50:59.260165 IP srv-nginx-a.metrotel.local.https > 172.20.1.4.19710: Flags [S.], seq 3107298579, ack 979144706, win 29200, options [mss 1460,nop,nop,sackOK, нет, масштаб 7], длина 0

11:50:59.260397 IP 172.20.1.4.19710 > srv-nginx-a.metrotel.local.https: флаги [.], ack 1, win 1825, длина 0

11:50:59.282128 IP 172.20.1.4.19710 > srv-nginx-a.metrotel.local.https: Flags [P.], seq 1:536, ack 1, win 1825, длина 535

11:50:59.282204 IP srv-nginx-a.metrotel.local.https > 172.20.1.4.19710: флаги [.], ack 536, win 237, длина 0

11:50:59.282659 IP srv-nginx-a.metrotel.local.https > 172.20.1.4.19710: Флаги [P.], seq 1:153, подтверждение 536, выигрыш 237, длина 152

11:50:59.282869 IP 172.20.1.4.19710 > srv-nginx-a.metrotel.local.https: флаги [.], ack 153, win 1892, длина 0

11:50:59.293101 IP 172.20.1.4.19710 > srv-nginx-a.metrotel.local.https: Flags [P.], seq 536:587, ack 153, win 1892, длина 51

11:50:59.332644 IP-адрес srv-nginx-a.metrotel.local.https > 172.20.1.4.19710: Флаги [.], подтверждение 587, выигрыш 237, длина 0

11:50:59.332935 IP 172.20.1.4.19710 > srv-nginx-a.metrotel.local.https: Flags [P.], seq 587:1300, ack 153, win 1892, длина 713

11:50:59.332967 IP srv-nginx-a.metrotel.local.https > 172.20.1.4.19710: Флаги [.], ack 1300, win 248, длина 0

11:50:59.333185 IP srv-nginx-a.metrotel.local.53190 > 192.168.59.20.http: флаги [S], seq 1924765737, win 29200, параметры [mss 1460, sackOK, TS val 
180831520 ecr 0,nop,wscale 7], длина 0

11:50:59.333584 IP 192.168.59.20.http > srv-nginx-a.metrotel.local.53190: флаги [S.], seq 4244116336, ack 1924765738, win 5792, параметры [mss 1460, sackOK, TS val 3558238853 180831520,nop,wscale 7], длина 0

11:50:59.333605 IP srv-nginx-a.metrotel.local.53190 > 192.168.59.20.http: Flags [.], ack 1, win 229, options [nop,nop,TS val 180831521 ecr 3558238853], длина 0

11:50:59.333639 IP srv-nginx-a.metrotel.local.53190 > 192.168.59.20.http: флаги [P.], seq 1:757, ack 1, win 229, параметры [nop,nop,TS
val 180831521 ecr 3558238853], длина 756: HTTP: GET / HTTP/1.0

11:50:59.333915 IP 192.168.59.20.http > srv-nginx-a.metrotel.local.53190: Flags [.], ack 757, win 58, options [nop,nop,TS val 3558238854 ecr 180831521], длина 0

11:50:59.334144 IP 192.168.59.20.http > srv-nginx-a.metrotel.local.53190: Flags [P.], seq 1:520, ack 757, win 58, options [nop,nop,TS val 3558238854 ecr 180831521], длина 519: HTTP: HTTP/1.1 302 Найдено

11:50:59.334157 IP srv-nginx-a.metrotel.local.53190 > 192.168.59.20.http: Flags [.], ack 520, win 237, options [nop,nop,TS val 180831521 ecr 3558238854], длина 0

11:50:59.334169 IP 192.168.59.20.http > srv-nginx-a.metrotel.local.53190: Flags [F.], seq 520, ack 757, win 58, options [nop,nop,TS val 3558238854 ecr 180831521 ], длина 0

11:50:59.334236 IP srv-nginx-a.metrotel.local.53190 > 192.168.59.20.http: флаги [F.], seq 757, ack 521, win 237, параметры [nop,nop,TS
val 180831521 ecr 3558238854], длина 0

11:50:59.334272 IP srv-nginx-a.metrotel.local.https > 172.20.1.4.19710: флаги [P.], seq 153:1048, ack 1300, win 248, длина 895

11:50:59.334438 IP 192.168.59.20.http > srv-nginx-a.metrotel.local.53190: 
Флаги [.], ack 758, win 58, опции [nop,nop,TS val 3558238854 ecr 180831521], длина 0

11:50:59.373720 IP 172.20.1.4.19710 > srv-nginx-a.metrotel.local.https: флаги [.], ack 1048, win 2004, длина 0

11:50:59.407267 IP 172.20.1.4.19710 > srv-nginx-a.metrotel.local.https: Flags [P.], seq 1300:2013, ack 1048, win 2004, длина 713

11:50:59.407531 IP srv-nginx-a.metrotel.local.53192 > 192.168.59.20.http: флаги [S], seq 3919551832, win 29200, параметры [mss 1460,sackOK,TS val 180831594 ecr 0,nop, масштаб 7], длина 0

11:50:59.407867 IP 192.168.59.20.http > srv-nginx-a.metrotel.local.53192: Флаги [S.], seq 2604868674, ack 3919551833, win 5792, параметры [mss 1460, sackOK, TS val 3558238928 38928 180831594,nop,wscale 7], длина 0

11:50:59.407897 IP srv-nginx-a.metrotel.local.53192 > 192.168.59.20.http: Flags [.], ack 1, win 229, options [nop,nop,TS val 180831595 ecr 3558238928], длина 0

11:50:59.407950 IP srv-nginx-a.metrotel.local.53192 > 192.168.59.20.http: флаги [P.], seq 1:757, ack 1, win 229, параметры [nop,nop,TS
val 180831595 ecr 3558238928], длина 756: HTTP: GET / HTTP/1.0

11:50:59.408211 IP 192.168.59.20.http > srv-nginx-a.metrotel.local.53192: Flags [.], ack 757, win 58, options [nop,nop,TS val 3558238928 ecr 180831595], длина 0

11:50:59.408605 IP 192.168.59.20.http > srv-nginx-a.metrotel.local.53192: Flags [P.], seq 1:520, ack 757, win 58, options [nop,nop,TS val 3558238928 ecr 180831595], длина 519: HTTP: HTTP/1.1 302 Найдено

11:50:59.408627 IP srv-nginx-a.metrotel.local.53192 > 192.168.59.20.http: Flags [.], ack 520, win 237, options [nop,nop,TS val 180831596 ecr 3558238928], длина 0

11:50:59.408642 IP 192.168.59.20.http > srv-nginx-a.metrotel.local.53192: Flags [F.], seq 520, ack 757, win 58, options [nop,nop,TS val 3558238928 ecr 180831595 ], длина 0

11:50:59.408711 IP srv-nginx-a.metrotel.local.53192 > 192.168.59.20.http: флаги [F.], seq 757, ack 521, win 237, параметры [nop,nop,TS
val 180831596 ecr 3558238928], длина 0

11:50:59.408748 IP srv-nginx-a.metrotel.local.https > 172.20.1.4.19710: Флаги [P.], seq 1048:1943, ack 2013, выигрыш 259, длина 895

11:50:59.408974 IP 192.168.59.20.http > srv-nginx-a.metrotel.local.53192: Flags [.], ack 758, win 58, options [nop,nop,TS val 3558238929 ecr 180831596], длина 0

11:50:59.408994 IP 172.20.1.4.19710 > srv-nginx-a.metrotel.local.https: флаги [.], ack 1943, win 2116, длина 0
Steffen Ullrich avatar
флаг se
Мне непонятно, что вы на самом деле делаете, и здесь нет ничего воспроизводимого (домены не разрешаются в DNS). Где именно вы получаете эту ошибку, к какому именно URL-адресу вы пытаетесь получить доступ, с помощью какого инструмента? Также TLS 1.0 — это не старый сертификат, а старая версия протокола TLS. И в вашей конфигурации вы даже не получаете доступ к внутреннему сайту по HTTPS, просто `http://...`.
Julian Rios avatar
флаг cn
Стеффен, эти домены являются локальными доменами, они недоступны из Интернета. Что я хочу сделать, так это использовать nginx в качестве прокси-сервера, чтобы ввести в моем браузере provision.metrotel.com.ar, и когда nginx прочитает этот URL-адрес, он отправит его на prov.metrotel.com.ar. Я плохо отношусь к TLS 1.0 как к старому сертификату, это старый протокол, вы правы. Я получил эту ошибку в prov.metrotel.com.ar (хостинг-сервер) Если я меняю proxy_pass на https://prov.metrotel.com.ar/, я получаю ту же NET::ERR_SSL_OBSOLETE_VERSION. Мой вопрос: есть ли способ «перезаписать» TLS 1.0 на TLS 1.2 с прокси-сервером?
Steffen Ullrich avatar
флаг se
*"Если я меняю proxy_pass на prov.metrotel.com.ar, я получаю тот же NET::ERR_SSL_OBSOLETE_VERSION."* - опять же непонятно, откуда у вас эта ошибка (клиент, nginx лог...) и URL и клиент, который вы используете именно для тестирования. URL-адрес, используемый клиентом, конечно, должен быть тот, который обслуживается nginx (`provision...`), а не оригинальный, обслуживаемый Apache (`prov...`).
dave_thompson_085 avatar
флаг jp
На самом деле это не «перезапись». С любым прокси-сервером, включая nginx, существует два разных соединения TLS-ранее-SSL: одно от клиента (браузера и т. д.) к прокси-серверу, одно от прокси-сервера к внутреннему серверу. Эти два соединения и их свойства полностью независимы, хотя данные уровня HTTP, полученные по одному, перенаправляются на другое. Можете ли вы получить захват с помощью wireshark или аналогичного, предпочтительно на прокси-сервере (nginx) или как можно ближе к нему?
Julian Rios avatar
флаг cn
Привет, ребята, спасибо за вашу помощь. Завтра сделаю отладку и выложу сюда. Используя TLS 1.2 и TLS 1.3 в прослушивании 443 ssl, продолжает показывать NET::ERR_SSL_OBSOLETE_VERSION. Сообщение, отображаемое в браузере, отправляется с внутреннего сервера (prov.metrotel.com.at). Такая же ошибка в Chrome, Firefox и Opera. Я использую provision.metrotel.com.ar в качестве URL-адреса в клиенте, поэтому перенаправление работает нормально, но я не могу сбросить TLS v1.0 и «обновить» его до TLS v1.2. 1.- Клиент для прокси - это TLS v1.2 2.- Прокси для бэкенда - TLS v1.0 3.- Наконец-то клиент для бэкенда - это TLS v1.0 :(
dave_thompson_085 avatar
флаг jp
Согласно tcpdump, nginx получает (в чистом виде) два перенаправления 302, хотя не показывает URL-адреса. **Возможно, из-за перенаправления клиент переходит непосредственно к серверной части, а не к прокси-серверу?** Если у вас есть (или вы можете получить) завиток, попробуйте `curl -vL https://proxy/desired_URL`, чтобы увидеть, где и как он перенаправляет, или в Chrome включите инструменты разработчика (F12) и выберите вкладку сети. Или используйте wireshark (как я сначала предложил), чтобы увидеть полное декодирование; если вы не можете установить его, используйте `tcpdump -w` для захвата в файл и переместите этот файл в место, где вы можете использовать wireshark.
dave_thompson_085 avatar
флаг jp
Добавлено: с помощью `curl -vL` вы также можете перенаправить вывод данных в файл, возможно, `/dev/null` (или Windows `NUL:`), чтобы было проще сосредоточиться на заголовках.
Рейтинг:1
флаг uz

Попробуйте включить TLS1.2 и 1.3, добавив ssl_protocols TLSv1.2 TLSv1.3; на ваш сервер раздел, например:

сервер {
    слушать 80;
    server_name provision.metrotel.com.ar;
    вернуть 301 https://provision.metrotel.com.ar$request_uri;
    ssl_protocols TLSv1.2 TLSv1.3;
}
dave_thompson_085 avatar
флаг jp
На http (слушайте 80) «сервере» это ничего не сделает. Это будет иметь эффект только на «сервере» https (слушайте 443), но по умолчанию уже должно быть до 1.2, что должно порадовать Chrome.
Рейтинг:0
флаг cn

На wireshark pcap соединение между клиентом (Chrome) и прокси (Nginx) — TLS 1.2. Другая часть (старый TLS Nginx-Apache) — это только HTTP. Прокси работает нормально, связи между клиентом и сервером нет, прокси всегда посередине.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.