将 SSL 请求从代理 Apache 服务器重定向到另一个 Apache 服务器

将 SSL 请求从代理 Apache 服务器重定向到另一个 Apache 服务器

我们有一个带有 URL 的旧应用程序https://www2.devDocApp.com/ 正在运行,Ubuntu8并且apache2.2不支持 TLS 1.2,我们apache2.2在 Ubuntu 8 机器上很难升级和使用 openSSL,所以现在我们使用的是代理apache服务器(secure-devDocApp带有 Apache/2.4.29 (Win64) 的 Windows 2012 VM),它将所有请求重定向到https://www2.devDocApp.com/

以下是我用来设置代理服务器的 apache 配置secure-devDocApp

<VirtualHost *:443>
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" 
DocumentRoot "C:/apache/htdocs"
ServerName  secure-devDocApp    
SSLEngine on
RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"


SSLProtocol -ALL TLSv1.2
SSLCertificateFile "C:/apache/conf/server.cer"
SSLCertificateKeyFile "C:/apache/conf/server.key"   
SSLCACertificateFile "C:/apache/conf/ca.cer"
SSLVerifyClient optional
SSLVerifyDepth  3

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "C:/apache/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>    
ProxyPass   / https://www2.devDocApp.com/   
SSLProxyEngine on

RequestHeader set X_SSL_CLIENT_M_SERIAL "%{SSL_CLIENT_M_SERIAL}s"
RequestHeader set X_FORWARDED_PROTO "https" env=HTTPS
RequestHeader set SslSubject "%{SSL_CLIENT_S_DN}s"

</VirtualHost>

我们有一个页面“/clientAuth”,它需要客户端证书身份验证,因此当我https://secure-devDocApp/clientAuth在浏览器中点击代理 Apache URL 时,它会提示从现有的客户端证书中进行选择,但是当我选择客户端证书时,我得到的是 404 而不是授权内容,但是客户端证书身份验证在旧版 URL 上运行良好https://www2.devDocApp.com/clientAuth` 提示输入客户端证书,我可以看到所选客户端证书的授权页面。

我怀疑代理 Apache 服务器secure-devDocApp没有将 SSL 证书请求转发到 的旧版 Apache 服务器www2.devDocApp.com。有人能帮我将 SSL 请求从一个 Apache 服务器转发到另一个吗?

答案1

在我们的旧版本中apache更新RequestHeader set X_SSL_CLIENT_M_SERIAL "%{SSL_CLIENT_M_SERIAL}s"为以下内容,以允许通过代理 Apache 服务器进行客户端证书身份验证

SetEnvIf X_SSL_CLIENT_M_SERIAL "^$" NO_X_SSL_CLIENT_M_SERIAL
RequestHeader set X_SSL_CLIENT_M_SERIAL "%{SSL_CLIENT_M_SERIAL}s" env=NO_X_SSL_CLIENT_M_SERIAL

还添加SSLOptions +ExportCertData到代理 apacheVirtualHost

相关内容