gpt4 book ai didi

java - 如何在自定义 HostnameVerifier 中获取服务器 IP 地址

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:25 26 4
gpt4 key购买 nike

我有一个从 HostnameVerifier 实现的自定义验证方法。

@Override
public boolean verify(String hostname, SSLSession session) {

此处的主机名 为我提供了客户端连接到的 URL 中的值(IP 地址或 dns 名称),SSLSession 为我提供了所有对等值像 peerCert(在我的例子中是服务器证书)和 peerCertChain。它还具有 peerHost,它是来自 URL 的值。

我正在尝试获取我的客户端连接到的服务器 IP 地址。 服务器(2 个)在负载均衡器之后。因此,在调用服务器时,我的客户端 URL 将始终具有负载均衡器 IP。

hostname 
peerHost=session.getPeerHost()

这两个都给我 URL 的值(即 loadBalancer IP)。

如何在我的自定义 HostnameVerifier 中获取负载均衡器后面的服务器的 IP 地址

SSLSession 已获得服务器证书..如何获取服务器 IP 地址?

对此非常感谢的任何建议/帮助

最佳答案

不可能从连接中获取负载平衡器后面的服务器的 IP 地址,因为连接是到负载平衡器而不是服务器。您可以到达服务器地址的唯一方法是负载均衡器告诉您它的地址。

假设负载均衡器是 TLS 连接的端点并且可以修改 TLS 内部的 HTTP 流量,则可以在响应中添加自定义 HTTP header 。但是,此信息仅在 TLS 握手完成后可用,即尚未在 HostnameVerifier 中可用,因为它是在 TLS 握手期间调用的。

如果负载平衡器不是 TLS 连接的端点,而只是将 TCP 连接原封不动地转发到服务器,您仍然无法从连接中获取 IP 地址,但如果服务器使用不同的证书,您可能会区分它们。证书的内容应该可以在 HostnameVerifier 中访问。

关于java - 如何在自定义 HostnameVerifier 中获取服务器 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42279141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com