/ / Възможно ли е да се изпълнява сертификат SSL / TLS от вътрешен сървър, използващ Apache като Reverse Proxy? - apache, ssl, reverse-proxy, позволява криптиране

Възможно ли е да се изпълнява сертификат SSL / TLS от вътрешен сървър, използващ Apache като Reverse Proxy? - apache, ssl, reverse-proxy, позволява криптиране

Имам достъп до Windows Server през единпубличен IP с някои виртуални хостове на Apache, конфигурирани да преминават към различни сървъри с уеб приложения и услуги (Apache действа като обратна прокси). На един от вътрешните сървъри искам да конфигурирам HTTPS с помощта на letsencrypt.

Успях да получа работния сертификат и конфигурацията на сървъра на вътрешния сървър, но проблемът е моят обратният прокси сървър (Apache), който не иска да тунинг този трафик HTTPS.

Редактиране: Знам, че ще бъде по-лесно да конфигурирате Reverse Proxy със сертификатите, но Let's s Encrypt няма добри автоматизирани опции за Windows и ръчно да променяте сертификатите на всеки 60 дни или по-скоро ще бъде доста досадно.

Конфигурацията на виртуалния хост в Apache 2.4 (Windows) изглежда така:

<VirtualHost *:443>
ServerName somesubdomain.mydomain.com
DocumentRoot "E:/Apache2/htdocs"
DirectoryIndex index.html

ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPreserveHost On

ProxyPass /  https://10.3.1.83/
ProxyPassReverse /   https://10.3.1.83/
</VirtualHost>

На 10.3.1.83 (Ubuntu / Nginx), използвайки certbot от letsencrypt, генерирах валидни сертификати и конфигурирах Nginx, за да обслужвам HTTPS плюс сертификатите.

Когато влизам в сървъра Ubuntu / Nginx от вътрешната страна на LAN, всичко работи като очакване. С помощта на Chrome DevTools мога да потвърдя, че сървърите са правилният сертификат LetsEncrypt.

Достъпът до съответния поддомейн отвън (Интернет) връща вътрешна страница за грешка в сървъра, а в дневниците Apache ми казва следното:

AH00961: HTTPS: failed to enable ssl support for 10.3.1.83:443 (10.3.1.83)

Редактиране: Накрая намерих няколко отговора: Изглежда, че SNI proxing не се изпълнява в Apache, само "SNI виртуален хостинг". Все пак може да се използва HAProxy или други проекти.

Apache HTTPS обръща прокси сървър със SNI без ключ на прокси сървъра https://serverfault.com/questions/614806/apache-mod-proxy-with-https-without-key-material-using-sni https://serverfault.com/questions/625362/can-a-reverse-proxy-use-sni-with-ssl-pass-through/625364

Отговори:

0 за отговор № 1

Мисля, че трябва да шифровате трафика от обратната прокси към клиента, като настроите шифроването на Proxy.

В противен случай вашият вътрешен уеб сървър и прокси сървър също могат да споделят SSL комуникация, като настроите SSL на вътрешния сървър на NO (но редактиран).

Но не можете да имате един сертификат за всички тях (или това би означавало, че използвате един и същ частен ключ / публични сертификати на няколко сървъра ...).

Защо така? Тъй като трафикът е криптиран между сървъра на клиента и сървъра за обратно предаване, тогава прокси сървърът няма да може да прочете заглавката "Хост" и други полезни заглавки на заявки за HTTP и така няма да може да препредава или дори да разбере заявките. ,

Следователно, ако не дублирате сертификати, моят отговор е ... НЕ. :-)

Не е толкова лошо, че вашите сертификати саконцентриран върху вашия пълномощник ... От гледна точка на сигурността, това е малко по-рисковано (концентрация на риска), но от административна гледна точка е по-лесно (концентрация на усилия).

EDIT: Отговорът е НЕ, ако искате да достигнете до голяма аудитория, включително остарели браузъри или библиотеки за разработки, които поех (Това е ДА в други случаи, вижте разговора по-долу).