解決SSLContext.getInstance()中參數(shù)設(shè)置TLS版本無效的問題
問題
SSLContext sc = SSLContext.getInstance(“TLSv1.1”)
設(shè)置后,https握手連接使用中使用的TLS版本還是jdk的默認版本(jdk7默認是TLSv1,jdk8默認是TLSv1.2)。
原因
代碼中有這個段
conn.getOutputStream().write(postBody.toString().getBytes());
// 輸入?yún)?shù) 進行輸入?yún)?shù),而
SSLContext sc = SSLContext.getInstance(“TLSv1.1”)
放在
conn.getOutputStream().write(postBody.toString().getBytes())
代碼的后面,導致設(shè)置的TLSv1.1不生效。
解決辦法
將SSLContext.getInstance(“TLSv1.1”)放到
conn.getOutputStream().write(postBody.toString().getBytes())
的前面即可。
以下在jdk8環(huán)境下的測試:
這樣設(shè)置不生效


這樣設(shè)置才生效


具體的原因
是因為在conn.getOutputStream()獲取輸出流的過程中,conn就已經(jīng)做了conn.connect()方法了,一條連接已經(jīng)建立了,后面再進行SSLContext sc = SSLContext.getInstance(“TLSv1.1”);指定TLS的版本自然就不會生效了。

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
mybatis寫xml時數(shù)字類型千萬別用 !=‘‘(不為空串)進行判斷的示例詳解
這篇文章主要介紹了mybatis寫xml時數(shù)字類型千萬別用 !=‘‘(不為空串)進行判斷的示例詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
分布式難題ElasticSearch解決大數(shù)據(jù)量檢索面試
這篇文章主要為大家介紹了分布式面試難題,ElasticSearch解決大數(shù)據(jù)量檢索的問題分析回答,讓面試官無話可說,幫助大家實現(xiàn)面試開薪自由2022-03-03
Java設(shè)置請求響應時間的多種實現(xiàn)方式
在前后端分離的開發(fā)模式中,前端請求后端獲取數(shù)據(jù)時,合理設(shè)置響應時間(超時時間)是提升系統(tǒng)性能和用戶體驗的關(guān)鍵,本文將深入探討如何在Java中設(shè)置請求的響應時間,需要的朋友可以參考下2025-01-01
springboot使用Logback把日志輸出到控制臺或輸出到文件
這篇文章給大家介紹springboot項目使用日志工具Logback把日志不僅輸出到控制臺,也可以輸出到文件的操作方法,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2020-10-10
Java 微信公眾號開發(fā)相關(guān)總結(jié)
公眾號作為主流的自媒體平臺,有著不少人使用。這次以文本回復作為案例來講解Java相關(guān)的微信公眾號開發(fā)2021-05-05
Resilience4J通過yml設(shè)置circuitBreaker的方法
Resilience4j是一個輕量級、易于使用的容錯庫,其靈感來自Netflix Hystrix,但專為Java 8和函數(shù)式編程設(shè)計,這篇文章主要介紹了Resilience4J通過yml設(shè)置circuitBreaker的方法,需要的朋友可以參考下2022-10-10
利用反射獲取Java類中的靜態(tài)變量名及變量值的簡單實例
下面小編就為大家?guī)硪黄梅瓷浍@取Java類中的靜態(tài)變量名及變量值的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12

