配置Apache以将SSL客户端证书发送到后端服务器

用户名

我想配置Apache,以便它接收客户端证书,然后将其传递给另一台服务器。我正在使用:

  • Windows上的Apache 2.0.65
  • 后端服务器是基于apache的解决方案(IBM HTTP Server)

我尝试了这个配置:

<VirtualHost *:443>
ServerName apacheserver.domain.com
SSLEngine on
SSLProxyEngine on
SSLCertificateFile "e:/Apache/Apache2/conf/server.cer"
SSLCertificateKeyFile "e:/Apache/Apache2/conf/server.key"
SSLCACertificateFile  "e:/Apache/Apache2/conf/certca.cer"
SSLVerifyClient require
SSLVerifyDepth 2
ProxyPreserveHost on
ProxyRequests off
<Proxy *>
  AddDefaultCharset Off
  Order deny,allow
  Allow from all
</Proxy>
# initialize the special headers to a blank value to avoid http header forgeries
RequestHeader set SSL_CLIENT_S_DN    ""
RequestHeader set SSL_CLIENT_I_DN    ""
RequestHeader set SSL_SERVER_S_DN_OU ""
RequestHeader set SSL_CLIENT_VERIFY  ""
<Directory />
  # add all the SSL_* you need in the internal web application
  RequestHeader set SSL_CLIENT_S_DN "%{SSL_CLIENT_S_DN}e"
  RequestHeader set SSL_CLIENT_I_DN "%{SSL_CLIENT_I_DN}e"
  RequestHeader set SSL_SERVER_S_DN_OU "%{SSL_SERVER_S_DN_OU}e"
  RequestHeader set SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}e"
  ProxyPass  https://192.168.10.191/
  ProxyPassReverse  https://192.168.10.191/
</Directory>
</VirtualHost>

当我尝试此配置时,我在apache的error.log文件上遇到此错误:

[Tue Dec 31 12:14:52 2013] [warn] Proxy client certificate callback: (apacheserver.domain.com:443) downstream server wanted client certificate but none are configured

有任何想法吗?

斯蒂芬·乌尔里希(Steffen Ullrich)

客户端证书在SSL连接中用于验证用户的身份。验证是通过公共密钥密码术完成的,例如,客户端使用其私钥对某些内容进行签名,并且可以使用公共密钥来验证签名。并且由于私有密钥仅是客户端知道的,而每个人都是公共密钥(它包含在证书中),因此只有客户端可以签名,但是每个人都可以验证签名,因此可以证明已签名的文本来自客户端。

如果您使用apache作为请求客户端证书的代理,它将收到包含客户端公钥的证书,并且它将能够验证客户端的签名。但是它无权访问客户端私钥,因此将无法使用客户端原始证书创建另一个https连接。它所能做的就是验证客户端证书,然后将重要信息作为HTTP标头转发到上游服务器。

似乎您尝试将客户端证书中的信息放入HTTP标头中,但是您的上游服务器需要更多信息,例如,它需要您不能提供的客户端证书(错误消息:“ ..下游服务器需要客户端证书..” )。因此,您需要更改上游服务器,以便它接受不带客户端证书的连接,并从插入代理中的HTTP标头读取授权信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

2种方式的SSL-客户端证书未发送到服务器

客户端证书未发送到服务器

如何将客户端数据发送到服务器端

通过Web服务将pdf文件从服务器发送到客户端

将数据从客户端发送到服务器-REST Web服务

将服务器的日期和时间发送到客户端计算机

如何将图像从服务器发送到客户端?

服务器如何使用Java将消息发送到客户端

React 和 NodeJS:如何将数据从服务器发送到客户端?

如何将空的终端输出从服务器发送到客户端?

使用套接字将值从服务器发送到客户端

如何将参数从CometD客户端发送到CometD服务器

是否可以将警报从服务器发送到Meteor中的客户端?

将登录事件从服务器发送到客户端

如何将Android客户端注册令牌发送到FCM服务器?

使用C中的套接字将文件从客户端发送到服务器

如何使用C ++中的Websocket客户端将消息发送到服务器?

如何将JPG文件从服务器发送到客户端

使用python套接字将Txt文件从客户端发送到服务器

如果客户端将SYN发送到udp服务器会发生什么

将CSV文件服务器发送到客户端

如何将消息从golang的websocket服务器主动发送到客户端

如何将信息从NodeJS服务器发送到客户端?

如何将邮件从服务器发送到特定客户端

将客户端对象发送到服务器时出错

将文件作为块从Java客户端发送到服务器

将图像从Java客户端发送到python服务器

Java套接字-将数据从客户端发送到服务器

将字符串消息从Netty客户端发送到服务器