java - 主机名 validator 实现

标签 java ssl

我在尝试实现此方法时遇到困难。我想做的是检查主机名是否与用户的请求匹配(关于 SSL 证书)如果主机名匹配或不匹配,sslshopper.com 将如何显示。

我的连接在 Controller.java 下:

HttpsURLConnection connection;
try {
    connection = (HttpsURLConnection) urlOK.openConnection();
    connection.connect();
} catch (IOException ex) {
    throw new IOException("Failed to connect: " + ex.getMessage());
}

我设置了一个名为 getHostnameVerified 的类,并将这些值从 Controller.java getHostNameVerified.returnValid(this,urlOK,connection);

传递给它

这是在 Controller.java 中找到的 UI 的 setter :

public void getHostname(boolean hostnameValid) {
    if (hostnameValid) {
        hostName.setText("Hostname match");
    } else if (!hostnameValid) {
        hostName.setText("Hostname mis-match");
    }
}

这是类:

public abstract class getHostNameVerified implements HostnameVerifier {

    public static void returnValid(Controller controller, URL url, HttpsURLConnection connection) {
        try {
            HostnameVerifier hv = new HostnameVerifier() {
                @Override
                public boolean verify(String s, SSLSession sslSession) {
                    System.out.println("DEBUG getHostNameVerified verify entered");
                    return true;
                }
            };
        }catch (Exception ex) {
            System.out.print("getHostNameVerified exception: " + ex.getMessage());
        }

    }

}

没有任何反应。我没有看到我知道是真的 SSL 证书的 println 语句。我执行错了吗?我完全被难住了:(。

最佳答案

您需要告诉 HTTPURLConnection 使用您的主机名 validator 的一个实例。

像这样:

try {
   HostnameVerifier hv = new HostnameVerifier() {
       public boolean verify(String arg0, SSLSession arg1) {
           return true;
       }
   };

   HttpsURLConnection.setDefaultHostnameVerifier(hv);

} catch (Exception localException) { }

关于java - 主机名 validator 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33674457/

相关文章:

java - JTable 不会显示

java - 如何根据 xlsx 工作表构建树状数据

Golang tcp-tls over socks5 代理客户端

apache - 缺少 SSL 支持的 cloudfoundry 构建包的 SSL 反向代理构建包?

Java位操作问题

java - JSON 单值数组

java - 相当于 javac ant 任务的命令行?

unit-testing - 通过 SSL 测试安全登录和注册

ssl - 电信中广泛使用的 SMPP 的安全性

ssl - 我是否必须等待网站上线才能设置 SSL?