我们有一个需要基于 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 认证的本质。我希望有人能启发我。
答案1
SSLProxyMachineCertificateFile
应该是您要找的;确保您已获得 PEM 格式的客户端证书(必须未加密,并且此文件中包含公钥和私钥 - -nodes
openssl 选项),并且设备应出示该证书以向上游服务器进行身份验证。
哦,还有一点不相关的:你的ProxyPassReverse
的设置看起来是向后的;它们通常应该匹配ProxyPass
。这不直观,但它用于动态修改上游服务器在标头中发送的绝对 URL 路径(它实际上不喜欢反向输入)。