如何在自定义 HostnameVerifier 中获取服务器 IP 地址
How to get server IP address in custom HostnameVerifier
我有一个从 HostnameVerifier 实现的自定义验证方法。
@Override
public boolean verify(String hostname, SSLSession session) {
这里的 hostname 给出了客户端连接到的 URL 中的值(IP 地址或 dns 名称)和 SSLSession 为我提供所有对等值,例如 peerCert(在我的示例中为服务器证书)和 peerCertChain。它还具有 peerHost,它是 URL.
的值
我正在尝试获取我的客户端连接到的服务器 IP 地址。 服务器(2 个)在负载平衡器 后面。所以我的客户端 URL 在调用服务器时将始终拥有负载均衡器 IP。
hostname
peerHost=session.getPeerHost()
这些都给我 URL 的值(即 loadBalancer IP)。
如何在我的自定义 HostnameVerifier 中获取负载平衡器后面的服务器 的 IP 地址?
SSLSession 已获得服务器证书..如何获取服务器 IP 地址?
对此非常感谢suggestion/help
不可能从连接中获取负载平衡器后面的服务器的 IP 地址,因为连接是到负载平衡器而不是服务器。您可以到达服务器地址的唯一方法是负载均衡器告诉您它的地址。
假设负载均衡器是 TLS 连接的端点并且可以修改 TLS 内部的 HTTP 流量,则可以在响应中添加自定义 HTTP header。但是,此信息仅在 TLS 握手完成后可用,即尚未在 HostnameVerifier 中可用,因为它是在 TLS 握手期间调用的。
如果负载平衡器不是 TLS 连接的端点,只是将 TCP 连接原封不动地转发到服务器,您仍然无法从连接中获取 IP 地址,但如果服务器使用不同的证书,您可能会区分它们。证书的内容应该可以在 HostnameVerifier 中访问。
我有一个从 HostnameVerifier 实现的自定义验证方法。
@Override
public boolean verify(String hostname, SSLSession session) {
这里的 hostname 给出了客户端连接到的 URL 中的值(IP 地址或 dns 名称)和 SSLSession 为我提供所有对等值,例如 peerCert(在我的示例中为服务器证书)和 peerCertChain。它还具有 peerHost,它是 URL.
的值我正在尝试获取我的客户端连接到的服务器 IP 地址。 服务器(2 个)在负载平衡器 后面。所以我的客户端 URL 在调用服务器时将始终拥有负载均衡器 IP。
hostname
peerHost=session.getPeerHost()
这些都给我 URL 的值(即 loadBalancer IP)。
如何在我的自定义 HostnameVerifier 中获取负载平衡器后面的服务器 的 IP 地址?
SSLSession 已获得服务器证书..如何获取服务器 IP 地址?
对此非常感谢suggestion/help
不可能从连接中获取负载平衡器后面的服务器的 IP 地址,因为连接是到负载平衡器而不是服务器。您可以到达服务器地址的唯一方法是负载均衡器告诉您它的地址。
假设负载均衡器是 TLS 连接的端点并且可以修改 TLS 内部的 HTTP 流量,则可以在响应中添加自定义 HTTP header。但是,此信息仅在 TLS 握手完成后可用,即尚未在 HostnameVerifier 中可用,因为它是在 TLS 握手期间调用的。
如果负载平衡器不是 TLS 连接的端点,只是将 TCP 连接原封不动地转发到服务器,您仍然无法从连接中获取 IP 地址,但如果服务器使用不同的证书,您可能会区分它们。证书的内容应该可以在 HostnameVerifier 中访问。