亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java如何使用SSLContext請求https鏈接

 更新時間:2024年01月23日 10:14:13   作者:大魔王King  
這篇文章主要介紹了Java如何使用SSLContext請求https鏈接問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

使用SSLContext請求https鏈接

先了解幾個關鍵類

  • SSLContext 安全套接字協(xié)議的實現核心類
  • SSLSocket 擴展自Socket用戶客戶端
  • SSLSocketFactory 工廠類
  • SSLServerSocket 擴展自ServerSocket用于服務端
  • SSLServerSocketFactory SSLServerSocket的工廠
  • KeyStore 密鑰證書
  • KeyManager 密鑰管理器
  • TrustManager 信任管理器
  • X590TrustedManager TrustManager的子接口,管理X509證書,驗證遠程鏈接

核心代碼

如下:

    //首先自己實現信任管理器類,創(chuàng)建一個X509TrustManager對象
    X509TrustManager x509m = new X509TrustManager() {  
    	//返回受信任的X509證書數組
        @Override  
        public X509Certificate[] getAcceptedIssuers() {  
            return null;  
        }  
        //檢查服務器的證書,若不信任該證書拋出異常,可以不檢查默認都信任
        @Override  
        public void checkServerTrusted(X509Certificate[] chain,  
                String authType) throws CertificateException {  
        }  
   	    //檢查客戶端證書,若不信任該證書拋出異常,咱們自己就是客戶端不用檢查
        @Override  
        public void checkClientTrusted(X509Certificate[] chain,  
                String authType) throws CertificateException {  
        }  
    };  
    // 獲取一個SSLContext實例,核心對象  
    SSLContext s = SSLContext.getInstance("SSL");  
    // 初始化SSLContext.init(可以導入的證書,信任管理器,SecureRandom) 三個參數都可為null,沒有證書填寫null就行
    s.init(null, new TrustManager[] { x509m },   new java.security.SecureRandom());
    //獲取SSLSocket 用于通信
    SSLSocketFactory factory = s.getSocketFactory();
    SSLSocket s = (SSLSocket) factory.createSocket("localhost", port);
    //獲取輸入輸出流
    OutputStream output = s.getOutputStream(); 
    InputStream input = s.getInputStream(); 
    //發(fā)送數據
    DataOutputStream out = new DataOutputStream(output);
    out.writeBytes("測試發(fā)送數據");
    out.flush();
    out.close();
    //接收數據
    Reader reader = new InputStreamReader(input, "UTF-8");
    BufferedReader bufferedReader = new BufferedReader(reader);
    String str = null;
    StringBuffer sb = new StringBuffer();
    while ((str = bufferedReader.readLine()) != null) {
        sb.append(str);
    }
    reader.close();
    System.out.println(sb.toString()); //打印返回的數據
    

這就是Java最原始的使用SSLContext創(chuàng)建SSLSocket發(fā)送https請求。

如果使用框架如okhttp httpclient 底層已經實現https請求,CA機構頒發(fā)的證書或者權威機構頒發(fā)的證書都是直接信任的 直接使用即可不需要再重寫任何代碼,網上的好多文章說的都有點問題,我已經親測可用,對于自己生成的證書的https服務才需要另外配置SSLContext這套代碼。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Springmvc 4.x利用@ResponseBody返回Json數據的方法

    Springmvc 4.x利用@ResponseBody返回Json數據的方法

    這篇文章主要介紹了Springmvc 4.x利用@ResponseBody返回Json數據的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 詳解MyBatis的動態(tài)SQL實現原理

    詳解MyBatis的動態(tài)SQL實現原理

    MyBatis提供了強大的動態(tài)SQL語句生成功能,以應對復雜的業(yè)務場景,本篇文章將結合MyBatis解析SQL語句的過程對MyBatis中對<if>,<where>,<foreach>等動態(tài)SQL標簽的支持進行分析,需要的朋友可以參考下
    2023-07-07
  • Java生成及校驗token的實踐

    Java生成及校驗token的實踐

    Token 的生成和校驗機制為應用程序提供了一種安全的身份驗證和授權方式,可以用于用戶認證、API 訪問控制等場景,本文主要介紹了Java生成及校驗token的實踐,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • 如何使用Java在excel單元格中設置超鏈接

    如何使用Java在excel單元格中設置超鏈接

    這篇文章主要介紹了如何使用Java在excel單元格中設置超鏈接,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • JDK多版本共存并自由切換的操作指南(本文為JDK8和JDK17)

    JDK多版本共存并自由切換的操作指南(本文為JDK8和JDK17)

    本文介紹了如何在Windows系統(tǒng)上配置多版本JDK(以JDK8和JDK17為例),并通過圖文結合的方式給大家講解了詳細步驟,具有一定的參考價值,需要的朋友可以參考下
    2025-03-03
  • 淺談servlet與jsp的關系

    淺談servlet與jsp的關系

    本文主要介紹了servlet與jsp的相關知識,并總結出servlet與jsp之間的關系,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 關于@ResponseBody 默認輸出的誤區(qū)的解答

    關于@ResponseBody 默認輸出的誤區(qū)的解答

    這篇文章主要介紹了關于@ResponseBody 默認輸出的誤區(qū)的解答,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 基于Java Socket實現一個簡易在線聊天功能(一)

    基于Java Socket實現一個簡易在線聊天功能(一)

    這篇文章主要給大家介紹基于Java Socket實現一個簡易在線聊天功能(一),分為客戶端和服務端兩段代碼,非常具有參考價值,感興趣的朋友一起學習吧
    2016-05-05
  • java之scan.next()與scan.nextline()函數的使用及區(qū)別

    java之scan.next()與scan.nextline()函數的使用及區(qū)別

    這篇文章主要介紹了java之scan.next()與scan.nextline()函數的使用及區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • java實現郵件發(fā)送

    java實現郵件發(fā)送

    這篇文章主要為大家詳細介紹了java實現郵件發(fā)送,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評論