package com.pccw.hktdcb.apiserver.util; import it.sauronsoftware.base64.Base64; import java.io.IOException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLException; import javax.net.ssl.SSLSession; import javax.net.ssl.SSLSocket; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.conn.ssl.X509HostnameVerifier; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.CoreConnectionPNames; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HttpsRequestUtil { protected static final Logger logger = LoggerFactory .getLogger(HttpsRequestUtil.class); private static final int TIME_OUT = Integer.parseInt(SystemConfig .getProperty("https_client_timeout")) * 1000; public static HttpClient getHttpClient() { @SuppressWarnings("deprecation") HttpClient httpclient = new DefaultHttpClient(); try { // Secure Protocol implementation. SSLContext ctx = SSLContext.getInstance("SSL"); // Implementation of a trust manager for X509 certificates X509TrustManager tm = new X509TrustManager() { public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }; X509HostnameVerifier hostnameVerifier = new X509HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { // TODO Auto-generated method stub return true; } public void verify(String arg0, SSLSocket arg1) throws IOException { // TODO Auto-generated method stub } public void verify(String arg0, X509Certificate arg1) throws SSLException { // TODO Auto-generated method stub } public void verify(String arg0, String[] arg1, String[] arg2) throws SSLException { // TODO Auto-generated method stub } }; ctx.init(null, new TrustManager[] { tm }, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx, hostnameVerifier); ClientConnectionManager ccm = httpclient.getConnectionManager(); // register https protocol in httpclient's scheme registry SchemeRegistry sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 443, ssf)); sr.register(new Scheme("http", 80, PlainSocketFactory .getSocketFactory())); // set Time out httpclient.getParams().setParameter( CoreConnectionPNames.CONNECTION_TIMEOUT, TIME_OUT); httpclient.getParams().setParameter( CoreConnectionPNames.SO_TIMEOUT, TIME_OUT); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (KeyManagementException e) { // TODO Auto-generated catch block e.printStackTrace(); } return httpclient; } public static String getHTTPSRequest(String url, String userName, String password) { logger.info("HttpsRequestUtil : getHTTPSRequest start............"); logger.debug("url : " + url); String result = null; HttpGet httpget = new HttpGet(url); try { String authString = userName + ":" + password; String authStringEnc = new String(Base64.encode(authString .getBytes())); httpget.addHeader("Authorization", "Basic " + authStringEnc); httpget.addHeader("content-type", "application/json"); httpget.addHeader("accept", "application/json"); HttpClient httpclient = getHttpClient(); HttpResponse response = httpclient.execute(httpget); if (response != null) { HttpEntity resEntity = response.getEntity(); if (resEntity != null) { int httpStatus = response.getStatusLine().getStatusCode(); if (httpStatus == HttpStatus.SC_OK) { result = EntityUtils.toString(resEntity, "UTF-8"); } else { logger.error( "HttpsRequestUtil : getHTTPSRequest failed, http status code is [{}]", httpStatus); } } } logger.debug("HttpsRequestUtil : getHTTPSRequest;result = " + result); } catch (ClientProtocolException e) { logger.error( "HttpsRequestUtil : getHTTPSRequest error occur, Exception is [{}]", e.getMessage()); } catch (IOException e) { logger.error( "HttpsRequestUtil : getHTTPSRequest error occur, Exception is [{}]", e.getMessage()); } finally { httpget.releaseConnection(); } logger.info("HttpsRequestUtil : getHTTPSRequest end........"); return result; } }
相关推荐
本文将详细介绍如何使用Apache HttpClient库进行HTTP远程接口调用,并讲解如何在Java中跳过SSL证书校验。 HttpClient是Apache提供的一款强大的HTTP客户端库,支持多种HTTP协议版本和功能,包括GET、POST请求、...
接下来,我们需要创建一个HttpClient实例,同时配置它跳过SSL认证。这可以通过自定义`SSLContext`和`TrustStrategy`实现: ```java import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import ...
在Android中,跳过SSL验证通常是通过自定义TrustManager和HostnameVerifier实现的。下面是一个简单的示例: ```java public class CustomSSLSocketFactory extends SSLSocketFactory { // 省略构造函数和相关方法 ...
在IT行业中,网络通信是至关重要的,特别是在进行Web服务交互时...通过学习上述内容,你将能够使用HTTPClient 4.5成功访问那些需要绕过SSL认证的HTTPS网站。在实际项目中,一定要谨慎处理这种情况,确保数据的安全性。
Java SpringBoot 项目跳过 ssl 证书认证文件
- `clientAuth`:表示是否要求客户端认证。 - `sslProtocol`:指定使用的 SSL/TLS 版本。 - `keystoreFile` 和 `keystorePass`:分别是密钥库文件路径和密码。 ### 步骤三:配置 Spring 配置文件 最后一步是在 ...
Java跳过HTTPS的SSL证书验证详解 本文主要介绍了Java跳过HTTPS的SSL证书验证的解决思路,并通过示例代码进行了详细的介绍,对大家的学习或者工作具有一定的参考学习价值。 一、HTTPS和HTTP的区别 HTTPS和HTTP的...
标题中的“安卓网站交互JSONxmlWebserviceUPnP相关-Https跳过安全认证SSL用于android开发不常用协议连接”表明这个...但需要注意的是,跳过SSL安全认证只应在调试阶段使用,正式发布时必须恢复,以保障用户数据的安全。
使用HttpClient4.5实现https请求忽略SSL证书验证工具类
springboot3.2.7 基于java17 ,测试https 接口,基于 RestTemplate 实现
5. 现在,你可以像平常一样执行HTTP请求了,Java会跳过证书验证。 注意:这种方法仅适用于开发和测试环境,不应用于生产环境,因为它会削弱安全性,使得系统容易受到中间人攻击。在生产环境中,你应该始终验证...
绕过https认证工具类,通过该工具类,可以绕过htts需要认证的环节,针对weblogic服务器有好的效果,亲测有效,绕过https认证工具类,通过该工具类,可以绕过htts需要认证的环节,针对weblogic服务器有好的效果,亲测...
java的get和post请求,获取json的工具类,https时会存在ssl校验的问题,工具会自动去除ssl校验。
如果使用自签名证书,可以跳过这一步。若需CA签名,需要将生成的CSR(Certificate Signing Request)提交给CA,获得签名后的证书。 **第三步:配置Tomcat的server.xml** 在`conf/server.xml`文件中,编辑或添加`...
请注意,这个示例中的`enableUnsafeSSL`方法仅用于演示,实际应用中应谨慎使用,因为它完全绕过了SSL验证,可能导致安全风险。在生产环境中,应该对证书进行正确的验证,确保数据传输的安全性。 在压缩包文件`...
两路认证(也称为两路tls,两路ssl,相互认证):客户端和对方验证证书的Https连接,也称为相互认证 有用的链接 一些历史 我主要使用Apache Http Client,因此最初仅使用来自Apache的http客户端创建了该项目。 一段...
在客户端,`client-beans.xml`文件中配置了多个拦截器,其中包括日志输出拦截器`LoggingOutInterceptor`、SOAP消息处理拦截器`SAAJOutInterceptor`,以及核心的`WSS4JOutInterceptor`用于实现安全认证。`WSS4...
SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, getTrustManager(), new SecureRandom()); return sslContext.getSocketFactory(); } catch (Exception e) { throw new ...
我们可以使用 ADConfig 类的变量来存储 AD 域的配置信息,然后使用 LTSSSLSocketFactory 类来建立 SSL 连接,最后实现免证书的查询操作。 修改操作 使用 LTSSLSLSocketFactory 类,我们可以实现免证书的修改操作。...
如果是自签名证书,则跳过此步骤。 4. **配置Tomcat**: 在Tomcat的`conf/server.xml`文件中添加或修改`<Connector>`元素来启用SSL连接,例如: ```xml <Connector port="8443" protocol="...