我们希望使用Apache 2(v2.4.51)作为(反向)代理来访问下游服务器(运行Tomcat)。Tomcat被配置为仅接受TLS v1.2和一组非常有限的密码(这是不可协商的)。
在日志中,我发现我们的Apache尝试使用TLS v1.3打开到Tomcat的连接,这导致下游服务器立即终止连接,并且没有进一步的通信发生。
我如何配置Apache服务器在 * 传出 */ * 下行 * 连接上使用特定的TLS版本和密码?到目前为止,我找到的Apache TLS配置都是处理 * 前端 * 端,即Apache接收和接受的内容。但在我的情况下,我需要调整后端端,即Apache在转发请求时使用的内容。
如何/在何处进行配置?
编辑:同时,我意识到术语“上游”和“下游”并不总是一致使用-所以以防万一:这里的“下游”是指如下所述的连接(2):
{浏览器/互联网} --(1)--〉[Apache反向代理服务器] --(2)--〉[Tomcat应用程序服务器]。
编辑2:在Tomcat的日志( Catalina .out)中,我不断收到下面的异常,这似乎表明它是使用TLS v1.3解决的(它不能处理):
Oct 06, 2022 5:22:06 PM org.apache.tomcat.util.net.NioEndpoint setSocketOptions
SEVERE:
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:171)
at sun.security.ssl.ServerHandshakeContext.<init>(ServerHandshakeContext.java:62)
at sun.security.ssl.TransportContext.kickstart(TransportContext.java:220)
at sun.security.ssl.SSLEngineImpl.beginHandshake(SSLEngineImpl.java:97)
at org.apache.tomcat.util.net.SecureNioChannel.reset(SecureNioChannel.java:89)
at org.apache.tomcat.util.net.SecureNioChannel.<init>(SecureNioChannel.java:71)
at org.apache.tomcat.util.net.NioEndpoint.setSocketOptions(NioEndpoint.java:666)
at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:808)
at java.lang.Thread.run(Thread.java:750)
javax.net.ssl|FINE|B5|http-nio-8443-Acceptor-0|2022-10-06 17:22:07.539 CEST|HandshakeContext.java:304|No available cipher suite for TLS13
javax.net.ssl|SEVERE|B5|http-nio-8443-Acceptor-0|2022-10-06 17:22:07.540 CEST|TransportContext.java:316|Fatal (HANDSHAKE_FAILURE): Couldn't kickstart handshaking (
"throwable" : {
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:171)
at sun.security.ssl.ServerHandshakeContext.<init>(ServerHandshakeContext.java:62)
at sun.security.ssl.TransportContext.kickstart(TransportContext.java:220)
at sun.security.ssl.SSLEngineImpl.beginHandshake(SSLEngineImpl.java:97)
at org.apache.tomcat.util.net.SecureNioChannel.reset(SecureNioChannel.java:89)
at org.apache.tomcat.util.net.SecureNioChannel.<init>(SecureNioChannel.java:71)
at org.apache.tomcat.util.net.NioEndpoint.setSocketOptions(NioEndpoint.java:666)
at org.apache.tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.java:808)
at java.lang.Thread.run(Thread.java:750)}
编辑3:我的/etc/apache2/conf.d/proxy.conf
文件现在读作:
Listen 443
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile -name-removed-
SSLProxyEngine On
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLProxyMachineCertificateFile -name-removed-
ProxyPass /foobar https://-name-removed-:8443/foobar
ProxyPassReverse /foobar https://-name-removed-:8443/foobar
SSLProxyProtocol +TLSv1.2
<Proxy "*">
Require all granted
SSLProxyProtocol +TLSv1.2
</Proxy>
LogLevel debug
ErrorLog "-name-removed-"
</VirtualHost>
注意:“foobar”和“-name-removed-”代表我为了隐私而替换的值。
编辑4:nmap的响应是:
# nmap -sV --script ssl-enum-ciphers -p 8443 127.0.0.1
Starting Nmap 7.70 ( https://nmap.org ) at 2022-10-10 16:12 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
PORT STATE SERVICE VERSION
8443/tcp open tcpwrapped
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds
#
这说明了什么?
2条答案
按热度按时间t98cgbkg1#
我建议运行一个像nmap这样的实用程序来评估后端服务器(Tomcat)的SSL功能。nmap很好地打印出给定TLS服务器支持的TLS协议和密码。使用这些信息,我们可以使用SSLProxyProtocol和SSLProxyCipherSuite指令配置Apache HTTPD,使其在后端连接中使用相同的协议和密码。
如何使用nmap:nmap -sV --脚本ssl枚举密码-p
gojuced72#
问题已经解决了!我在配置文件中有一个错字!为我感到羞耻,为消耗的带宽感到抱歉。