Apache SSL代理找不到客户端证书?

我的Web服务器需要与位于防火墙后面的第三方服务器集成。 为了通过防火墙,所有的请求必须来自同一个IP地址,并通过SSLauthentication。 因此,我build立了一台应该作为代理的机器,并通过SSL将所有stream量转发到第三方服务器。

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

代理客户端证书callback:(:443)下游服务器想要客户端证书,但没有configuration[Sun Jul 29 01:40:48 2012] [error](502)未知错误502:proxy:通过请求主体未能<第三方IP >:18443(<第三方url)
[Sun Jul 29 01:40:48 2012] [error] [client] proxy:SSL握手过程中出错,远程服务器返回/

我的apache虚拟主机configuration如下所示:

<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> 

谢谢! 任何帮助,高度赞赏!

您需要将Apacheconfiguration为使用该证书文件作为其代理后端的身份validation机制。

.pem.key合并成一个文件,然后用下面的方法指出:

 SSLProxyMachineCertificateFile /path/to/combined.pem 

Imho他真正要求的是一个Apache,它将SSL请求代理到一个端点服务器,可能是一个应用服务器,它执行SSL客户端证书authentication。

在这种情况下,SSLProxyMachineCertificateFile不会帮助你,因为这个文件包含一个证书,通过这个证书,apache服务器用应用服务器validation自己…你不想这样做:你想让调用客户端使用他的证书

据推测,Apache应该可以将获得的证书信息通过应用服务器(例如通过AJP)传递给应用服务器,但目前为止还没有能够实现这一目标。 我会尝试更新这个答案,如果我得到它的工作…