Apache SSL Proxy 找不到客户端证书?

Apache SSL Proxy 找不到客户端证书?

我的 Web 服务器需要与防火墙后面的第三方服务器集成。为了通过防火墙,所有请求都必须来自同一 IP 地址并通过 SSL 进行身份验证。因此,我设置了一台机器,该机器应该充当代理,并通过 SSL 将所有流量转发到第三方服务器。

我使用证书和匹配的密钥文件设置了代理,并且可以使用证书和密钥文件通过 CURL 成功向第三方服务发出请求。我在 Apache 上设置了一个虚拟主机来传递这些请求,但一直收到错误消息,提示与远程服务器的 SSL 握手失败。我在 Apache 日志中看到以下错误消息:

代理客户端证书回调:(:443)下游服务器需要客户端证书,但均未配置 [2012 年 7 月 29 日星期日 01:40:48] [错误](502)未知错误 502:代理:将请求正文传递至 <第三方 IP>:18443(<第三方 URL>)失败
[2012 年 7 月 29 日星期日 01:40:48] [错误] [客户端] 代理:与远程服务器进行 SSL 握手时出错,由 / 返回

我的 apache 虚拟主机配置如下:

<VirtualHost *:18443>
    ServerName <Proxy IP>
    SSLEngine on
    SSLProxyEngine On
    SSLCertificateFile /etc/apache2/ssl/my_server.pem
    SSLCertificateKeyFile /etc/apache2/ssl/my_server.key
    SSLProxyCACertificatePath /etc/ssl/certs
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>
    ProxyPass / https://<3rd party server address>:18443
    ProxyPassReverse / https://<3rd party server address>:18443
</VirtualHost>

谢谢!任何帮助都非常感谢!

答案1

您需要配置 Apache 以使用该证书文件作为其代理后端的身份验证机制。

.pem和合并.key为一个文件,并使用以下命令指向它:

SSLProxyMachineCertificateFile /path/to/combined.pem

答案2

我认为他真正想要的是一个 Apache,它将 SSL 请求代理到端点服务器(大概是应用程序服务器),执行 SSL 客户端证书认证...

SSLProxyMachineCertificateFile 在这种情况下不会帮助你,因为这个文件包含一个证书,apache 服务器通过该证书向应用程序服务器进行身份验证...你不希望这样:你希望调用客户端使用他的证书

Apache 应该可以将其获得的证书信息传递到应用服务器,例如通过 AJP,但到目前为止我还没能做到这一点。如果我能让它工作,我会尝试更新这个答案……

答案3

我遇到了同样的错误。配置的对等名称与当前指令不匹配可能有问题ProxyPass。实际上,我通过 localhost 访问服务。以下配置行对我有用:

SSLProxyEngine on
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
ProxyPass "/api/" "https://localhost:18443/api/"

(感谢来自@ajmurmann 的评论

但消息Proxy client certificate callback: (:443) downstream server wanted client certificate but none are configured仍然存在于错误日志中,但请求正在运行。

相关内容