我有一个特殊的用例,在客户端和远程服务器之间需要一个中间主机。我已经设置了一个中间主机@ 10.1.10.15,以将流量转发到我的远程服务器或从我的远程服务器转发流量。
因此,在我的Android应用中,我将根据以下网址发送HTTP请求:
https://10.1.10.15/...
中间主机将显示从实际远程服务器获得的证书,然后HostnameVerifier将起作用并拒绝该请求,因为10.1.10.15与远程服务器上证书的CN不匹配。
我当然可以自定义ssl HostnameVerifier,以便它可以查看主机名是否是IP地址@ 10.1.10.15:
protected static final HostnameVerifier ALWAYS_VERIFY = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession sslSession) {
return hostname.toLowerCase().equals(@"10.1.10.15");
}
};
但是我想这样做会引起一些安全方面的担忧。
我的问题是:如何安全地这样做?