У нас есть внутренний сервер, который требует аутентификации на основе 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, которые вышестоящий сервер отправляет в заголовках (на самом деле он не любит обратный ввод).