Java访问SSL地址,免验证证书方式

摘要:
1packagecom.lenovo.biportal.utils.bitool;23importjavax.net.ssl.HostnameVerifier;4importjavax.net.ssl.HttpsURLConnection;5importjavax.net.ssl.SSLContext;6importjavax.net.ssl.X509TrustManager;7importjav
1 packagecom.lenovo.biportal.utils.bitool;
2 
3 importjavax.net.ssl.HostnameVerifier;
4 importjavax.net.ssl.HttpsURLConnection;
5 importjavax.net.ssl.SSLContext;
6 importjavax.net.ssl.X509TrustManager;
7 importjava.io.BufferedReader;
8 importjava.io.InputStream;
9 importjava.io.InputStreamReader;
10 importjava.net.HttpURLConnection;
11 
12 public classSSL {
13     final static HostnameVerifier DO_NOT_VERIFY = (hostname, session) -> true;
14 
15     public static voidhttpGet(String path) {
16         StringBuffer tempStr = newStringBuffer();
17         String responseContent = "";
18         HttpURLConnection conn = null;
19         try{
20             //Create a trust manager that does not validate certificate chains
21 trustAllHosts();
22             URL url = newURL(path);
23             HttpsURLConnection https =(HttpsURLConnection) url.openConnection();
24             if (url.getProtocol().toLowerCase().equals("https")) {
25 https.setHostnameVerifier(DO_NOT_VERIFY);
26                 conn =https;
27             } else{
28                 conn =(HttpURLConnection) url.openConnection();
29 }
30 conn.connect();
31             System.out.println("地址:" + path + ", success, result: " + conn.getResponseCode() + " " +conn.getResponseMessage());
32             //HttpURLConnection conn = (HttpURLConnection)
33             //url.openConnection();
34 
35             //conn.setConnectTimeout(5000);
36             //conn.setReadTimeout(5000);
37             //conn.setDoOutput(true);
38 
39             InputStream in =conn.getInputStream();
40             conn.setReadTimeout(10 * 1000);
41             BufferedReader rd = new BufferedReader(newInputStreamReader(in,
42                     "UTF-8"));
43 String tempLine;
44             while ((tempLine = rd.readLine()) != null) {
45 tempStr.append(tempLine);
46 }
47             responseContent =tempStr.toString();
48 System.out.println(responseContent);
49 rd.close();
50 in.close();
51         } catch(Exception e) {
52             logger.error("地址:{}, ins error", e);
53         } finally{
54             if (conn != null) {
55 conn.disconnect();
56 }
57 }
58 }
59 
60     /**
61 * Trust every server - dont check for any certificate
62      */
63     public static voidtrustAllHosts() {
64 
65         //Create a trust manager that does not validate certificate chains
66         TrustManager[] trustAllCerts = new TrustManager[]{newX509TrustManager() {
67 
68             publicjava.security.cert.X509Certificate[] getAcceptedIssuers() {
69                 return newjava.security.cert.X509Certificate[]{};
70 }
71 
72             public voidcheckClientTrusted(X509Certificate[] chain, String authType) {
73 
74 }
75 
76             public voidcheckServerTrusted(X509Certificate[] chain, String authType) {
77 
78 }
79 }};
80 
81         //Install the all-trusting trust manager
82         //忽略HTTPS请求的SSL证书,必须在openConnection之前调用
83         try{
84             SSLContext sc = SSLContext.getInstance("TLS");
85             sc.init(null, trustAllCerts, newjava.security.SecureRandom());
86 HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
87         } catch(Exception e) {
88             System.out.println("trustAllHosts is error" +e);
89 }
90 }
91 
92 }

转载:

https://ningyu1.github.io/site/post/53-ssl-cert-3/

免责声明:文章转载自《Java访问SSL地址,免验证证书方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇安装nodejs和yarn(配置淘宝源)redis跨实例迁移 & redis上云下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

fcitx5 主题设置

目录 前言 参考来源 手动安装 下载主题 设置配色方案 启用主题 使用包管理器安装 注意 请按截图提示安装 前言 在Linux系统下,fcitx5的初始主题太难看了,所以决定改变一下主题,本文相当大程度copy自github 参考来源 https://ywnz.com/linuxmh/8100.html https://wiki.ar...

react-infinite-scroll-component ,滚动条,滚动加载

 使用一个组件,让你所有的无限滚动的痛苦消失,只有4.15kB!Pull Down to Refresh新增功能。一个无限的滚动,实际工作和超级简单的集成! 安装 npm install --save react-infinite-scroll-component // in code ES6 import InfiniteScroll f...

Robot Framework安装环境与导入自定义py模块

①安装python2.7 虽然python2.7据说已经停止更新,但是还是要继续用。 官网下载: https://www.python.org/downloads/windows/ 添加环境变量,将C:Python27和C:Python27Scripts(python2.7安装路径)添加到系统环境变量Path后面。 ②安装Robot Framework...

Android开发环境搭建教程

全文转载于ReCclay,只做存储,便于查阅!侵权即删。 一、下载Android Studio 打开<官网>,直接点击下载   这里默认下载的是安装版并且不自带SDK(后期软件下载)   二、Android Studio安装 正式安装之前,最好先准备两个文件夹:一个用来存放安装程序,一个用来存放SDK。效果如下如图,所示。 注意:SD...

Canal使用小结

Canal使用小结 之前公司存在mysql数据同步mongo的需求,可以有多种实现方式,比如硬编码,发送消息等。公司选择的是Canal中间件,最近有空来研究下他的使用方式,对于mysql数据变更监听有需求的应用场景都可以使用它。 参考:https://yq.aliyun.com/articles/14570 Canal介绍 基于mysql数据库binl...

华为S5300系列交换机限制特定IP可以登录Web

针对Web管理可能有如下需求: 1、限制某个特定IP允许访问Web 2、默认修改80端口访问 那么针对上面的设置可以有效杜绝而已Web密码暴力破解,增强交换机安全等。 实现: 1、限制特定IP登录Web,实现原理是使用ACL进行控制 [Huawei] acl 2000 // 配置ACL编号为2000。 [Huawei-acl-basic-2000] r...