Apache反向代理配置咨询:客户端与代理间mTLS认证,代理与后端间普通TLS/HTTP传输
Apache反向代理配置咨询:客户端与代理间mTLS认证,代理与后端间普通TLS/HTTP传输
嗨,我来帮你梳理这个Apache反向代理的配置问题,先帮你确认冗余项,再给你优化后的配置参考,同时解答你关于HTTP转发的疑问:
一、当前配置里的冗余项确认
你对冗余部分的判断基本是对的,这些指令确实和你要的场景无关,可以完全移除:
SSLProxyEngine On及后续SSLProxy*系列指令:这些都是用来配置代理和后端服务器之间的TLS/mTLS交互的(比如验证后端证书、代理给后端发自己的证书),既然你不需要代理和后端间的mTLS,这些全部删掉就行。RequestHeader set SSL_CLIENT_CERT相关行:这两行是用来把客户端的证书内容通过HTTP头传递给后端的,如果你不需要后端知道客户端证书信息,直接删掉这两行,完全没用。- 另外补充一个细节:你的
SSLCACertificateFile应该放签发客户端证书的CA根证书,而不是单个客户端证书。如果所有客户端证书都是同一个CA签发的,只需要配置这个CA根证书,代理会自动验证客户端证书是否由该CA签发,这样后续新增客户端证书时不需要修改代理配置,扩展性更好。
二、优化后的单vHost配置示例
# --------------------------------------------- # mTLS vHost for Service <Appl_a> # --------------------------------------------- <VirtualHost <dns_alias>:<PortID>> ServerName <dns_alias> # Custom logs for this vHost ErrorLog "<Logdir>/error_log" TransferLog "<Logdir>/access_log" # SSL activation on the proxy itself SSLEngine on SSLCertificateFile "<Path_to_keys>/proxy.cer" # Proxy cert (chain includes CA trust cert if needed) SSLCertificateKeyFile "<Path_to_keys>/proxy.key" # Proxy private key # Security options ProxyRequests off # Disable forward proxy mode, only reverse proxy SSLProtocol -all +TLSv1.2 +TLSv1.3 # Restrict to secure TLS versions SSLHonorCipherOrder On # Prioritize server-side cipher suite order # Client certificate authentication (mTLS between proxy & client) SSLVerifyClient require SSLVerifyDepth 10 SSLCACertificateFile "<Path_to_keys>/client_ca_root.cer" # CA root that signs all client certificates # Proxy configuration to backend (using HTTPS) <Location /> ProxyPass https://<appl_URL>:<appl_PORT>/<WS_URL> ProxyPassReverse https://<appl_URL>:<appl_PORT>/<WS_URL> </Location> </VirtualHost>
三、关于终止TLS后转发HTTP到后端的疑问
完全正确!如果你想在代理层终止TLS,然后用纯HTTP转发请求到后端,只需要把ProxyPass和ProxyPassReverse里的https://改成http://即可,同时确保后端服务监听对应的HTTP端口。这种情况下,代理到后端的通信是明文HTTP,不需要任何额外的SSL代理指令,配置会更简洁。
备注:内容来源于stack exchange,提问作者olivierg
相关产品推荐
相关产品推荐

