我们有一个带有 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