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

Как настроить обратный прокси-сервер для включения HTTP-доступа с базовой аутентификацией к внутреннему HTTPS-серверу, для которого требуется сертификат

У нас есть внутренний сервер, который требует аутентификации на основе x509, но меня попросили открыть его с базовой аутентификацией пользователя / пароля.

Я пытался настроить обратный прокси-сервер в apache, который использует доверенный сертификат для подключения к внутреннему серверу, но, похоже, я не могу выбрать и использовать сертификат. Обычная проверка подлинности работает нормально.

Пройдя здесь все связанные вопросы и погуглите в течение нескольких дней, я уверен, что мне нужно использовать некоторые директивы SSLProxy *, но ни одно из того, что я пробовал, пока не было успешным.

Кстати, я использую самозаверяющий сертификат для аутентификации на внутреннем сервере.

Пока мой файл .conf читается так

<VirtualHost *:80>
    ServerName external.server

    SSLProxyEngine on
    UnknownSSLDirectives

    ProxyRequests Off
    ProxyPass        / https://internal.server/
    ProxypassReverse https://internal.server/ /

    <Location />
        AuthType Basic
        AuthName "Authenticated proxy"
        AuthUserFile /etc/httpd/passwd/passwords
        Require user USER
    </Location>

    <Proxy>
        Order Deny,Allow
        Allow from all
    </Proxy>

    RequestHeader unset Authorization

    ErrorLog "logs/proxy.error.log"
    CustomLog "logs/proxy.access.log" common
</VirtualHost>

Кажется, я так близок, но не могу проникнуть в суть аутентификации SSL ... Надеюсь, кто-нибудь сможет просветить меня.

SSLProxyMachineCertificateFile должно быть то, что вы ищете; убедитесь, что у вас есть сертификат клиента в формате PEM (он должен быть незашифрованным, и в этом файле есть как открытый, так и закрытый ключи - -nodes openssl), и устройство должно предоставить этот сертификат для аутентификации вышестоящему серверу.

Да, и полунезависимые: ваши ProxyPassReverseнастройки выглядят наоборот; они обычно должны совпадать ProxyPass. Это не интуитивно понятно, но оно предназначено для оперативной модификации абсолютных путей URL, которые вышестоящий сервер отправляет в заголовках (на самом деле он не любит обратный ввод).