java中的HostnameVerifier接口

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。

一、概述

位于javax.net.ssl包下。声明:public interface HostnameVerifier

 

此类是用于主机名验证的基接口。

在握手期间,如果 URL 的主机名和服务器的标识主机名不匹配,则验证机制可以回调此接口的实现程序来确定是否应该允许此连接。

策略可以是基于证书的或依赖于其他验证方案。

当验证 URL 主机名使用的默认规则失败时使用这些回调。

 

二、方法

 

 

boolean verify(String hostname,SSLSession session) 验证主机名和服务器验证方案的匹配是可接受的。
 

参数:

hostname - 主机名

session - 到主机的连接上使用的 SSLSession

返回:

如果主机名是可接受的,则返回 true

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要创建一个HTTPS接口,需要经过以下几个步骤: 1. 获取证书文件 你需要获取服务器的证书文件,通常是以 .cer 或 .pem 格式存储的。你也可以使用自签名证书,但是在生产环境不建议使用。 2. 配置HTTPS连接 在Java,使用HttpsURLConnection来建立HTTPS连接。你需要配置连接参数,如证书验证、请求方法等。 3. 发送HTTPS请求 你可以使用URLConnection的getInputStream或getOutputStream方法来发送HTTPS请求,并获取响应。 下面是一个示例代码,演示如何创建一个HTTPS接口: ``` import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class HttpsClient { public static void main(String[] args) throws Exception { String httpsUrl = "https://example.com/api"; URL url = new URL(httpsUrl); // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; // Install the all-trusting trust manager SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); // Create all-trusting host name verifier HostnameVerifier allHostsValid = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }; // Install the all-trusting host verifier HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); // Create the connection HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setRequestMethod("GET"); // Read the response BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println(inputLine); } in.close(); } } ``` 在上面的示例,我们使用了一个自定义的 TrustManager 和 HostnameVerifier,以便在连接时忽略证书验证。在实际生产环境,你应该使用正式的证书,并配置HTTPS连接以验证证书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值