Назад | Перейти на главную страницу

Apache SSLProxy

Я ищу решение для предоставления веб-приложения, работающего в нашей локальной сети под субдоменом через SSL. Мы хотим использовать не DynDNS, а поддомен нашего собственного домена.

Наша текущая установка

Корневой сервер (Интернет)

У нас есть корневой сервер с ubuntu 16.04, apache 2, размещенный в центре обработки данных, где заканчивается наш домен example.com и все поддомены.

<VirtualHost *:443>
        ServerName SUB.EXAMPLE.COM
        SSLEngine on
        SSLProxyEngine on
        SSLProxyCheckPeerCN On
        SSLProxyCheckPeerExpire On
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
                ProxyPass / https://PUBLICIP:9443/
                ProxyPassReverse / https://PUBLICIP:9443/
</VirtualHost>

Сервер приложений (локальный)

Debian с apache 2

<VirtualHost *:9443>
        ServerName SUB.EXAMPLE.COM
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/MYAPP
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        <IfModule mod_headers.c>
           Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
        </IfModule>
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/SUB.DOMAIN.COM/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/SUB.DOMAIN.COM/privkey.pem
</VirtualHost>

Исследования на данный момент

  1. Я знаю, что конфигурация корневого сервера неправильная, потому что я не предоставляю там сертификат, см. Вопросы.
  2. Большинство решений, которые я нашел, связаны с обработкой SSL с обратного прокси (нашего корневого сервера), но соединение между обоими серверами осуществляется не через ssl (например, потому что они находятся в одной сети, поэтому это не обязательно). Хотя нам это нужно, потому что в противном случае связь между корневым сервером и приложением не была бы зашифрована.
  3. Брандмауэр разрешает доступ через порт 9443, поэтому при попытке доступа https: // ИЗДАНИЕ: 9443 Я получаю NET :: ERR_CERT_COMMON_NAME_INVALID (что правильно, потому что сертификат предназначен для SUB.EXAMPLE.COM).

Вопросы

Мне нужно получить 2 сертификата? Один для SUB.EXAMPLE.COM на нашем корневом сервере и один для нашего PUBLICIP (что, по-видимому, невозможно через Letsencrypt). Или есть другой способ исправить это (без настройки DNS)?

Поэтому я решил использовать один и тот же сертификат на обоих серверах и следующую конфигурацию виртуального хоста на корневом сервере:

<VirtualHost *:443>
        ServerName SUB.EXAMPLE.COM
        ProxyPass / https://PUBLICIP:9443/
        ProxyPassReverse / https://PUBLICIP:9443/

        SSLCertificateFile /etc/letsencrypt/live/SUB.EXAMPLE.COM/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/SUB.EXAMPLE.COM/privkey.pem

        Include /etc/letsencrypt/options-ssl-apache.conf

        SSLProxyEngine on
        SSLProxyCheckPeerCN Off
        SSLProxyCheckPeerName Off
        SSLProxyCheckPeerExpire On

</VirtualHost>