1. 程式人生 > >https站點強制通訊協議TLSv1.2

https站點強制通訊協議TLSv1.2

現在網路安全原來越重要,好多公司網站需要ssl支援,也就是要求客戶通過https訪問公司站點,由於TLSv1.1容易被黑客攻擊,於是很多企業要求站點只提供TLSv1.2協議支援。

對Java 程式,TLSv1.2的實現中, oracle 從JDK1.7 update96以後的版本才開始支援,IBM JDK 採用的是類似的方案。只有從JDK1.8開始才是預設支援的。

https://bugs.openjdk.java.net/browse/JDK-7093640

https://www.java.com/en/configure_crypto.html#enableTLSv1_2

https://wiki.openssl.org/index.php/Manual:Ciphers(1) 參見TLSv1.2支援的cipher list.

TLSv1.2協議支援具體要分三部分內容。

<一>伺服器對TLSv1.2的支援。

具體要看伺服器採用的是那種伺服器,這裡主要講Apache web server 和Tomcat 為基礎的web 伺服器。

Apache web server:

更新檔案 httpd-ssl.conf於如下路徑:WebServer/conf/extra/

做如下更改: 

#Limit Protocol to TLSv1.2
SSLProtocol +TLSv1.2


#Update cipher suites to remediate variousencryption related vulnerabilities
SSLHonorCipherOrder On
SSLCipherSuiteECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256

Tomcat:

 更新檔案wrapper.conf 檔案於如下路徑

 Tomcat/conf/ (Windows) or the setenv.shscript file (UNIX) with the following modifications:

·        新增引數 -Djdk.tls.client.protocols=TLSv1.2 在 Java Virtual Machine (JVM) arguments.

針對AIX 環境引數變為-Dcom.ibm.jsse2.overrideDefaultProtocol="TLSv12".

·       如果Tomcat 配置了TLS , 更新檔案 server.xml 在如下路徑

Tomcat/conf/, 如下. 在<Connector> 定義中, 更改 ciphers 和 sslProtocols 引數如下:

ciphers="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA" sslProtocols="TLSv1.2"

<二>客戶端設定對TLSv1.2的支援

現代瀏覽器對TLS 1.2 預設支援的版本如下: 

    Firefox: Next 6 months (either version 27 or 28) 
    IE version 11 
    Google Chrome 31 
    Opera 18 on Windows 
    Safari 7.0 on Mac 

  ①.開啟Java Control Panel,檢視Java支援的TLS版本

  ②.高階。拉到最下面。

                      

為了你的瀏覽器在訪問時不彈出不安全訪問訪問提示,你需要在瀏覽器中匯入客戶端證書。


TrustError IE.png

<三>客戶端預設通過TLSv1.2訪問設定。

本文以httpClient 4.5.1為例,特別講述了怎麼讓客戶端程式強制通過TLSv1.2通訊的程式碼修改。
  1. import org.apache.http.impl.client.DefaultHttpClient;  
  2. publicclass SSLClient extends DefaultHttpClient {  
  3.         public SSLClient() throws Exception {  
  4.             super();  
  5.             SSLContext ctx = SSLContext.getInstance("TLSv1.2");  
  6.             X509TrustManager tm = new X509TrustManager() {  
  7.                 @Override
  8.                 publicvoid checkClientTrusted(X509Certi<a target=_blank target="_blank" href="http://superuser.com/questions/747377/enable-tls-1-1-and-1-2-for-clients-on-java-7">http://superuser.com/questions/747377/enable-tls-1-1-and-1-2-for-clients-on-java-7</a>ficate[] chain, String authType) throws CertificateException {  
  9.                 }  
  10.                 @Override
  11.                 publicvoid checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {  
  12.                 }  
  13.                 @Override
  14.                 public X509Certificate[] getAcceptedIssuers() {  
  15.                     returnnull;  
  16.                 }  
  17.             };  
  18.             ctx.init(nullnew TrustManager[] { tm }, null);  
  19.             org.apache.http.conn.ssl.SSLSocketFactory ssf = new org.apache.http.conn.ssl.SSLSocketFactory(ctx,  
  20.                     org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);  
  21.             ClientConnectionManager ccm = this.getConnectionManager();  
  22.             SchemeRegistry sr = ccm.getSchemeRegistry();  
  23.             sr.register(new Scheme("https"443, ssf));  
  24.         }  
  25.     }  

為了測試需要你可以通過如下程式碼來測試你的客戶端環境,看你的客戶程式可以採用的協議:

  1. publicstaticvoid main(String[] args) throws Exception {  
  2.         SSLContext context = SSLContext.getInstance("TLS");  
  3.         context.init(nullnullnull);  
  4.         SSLSocketFactory factory = (SSLSocketFactory) context.getSocketFactory();  
  5.         SSLSocket socket = (SSLSocket) factory.createSocket();  
  6.         String[] protocols = socket.getSupportedProtocols();  
  7.         System.out.println("Supported Protocols: " + protocols.length);  
  8.         for (int i = 0; i < protocols.length; i++) {  
  9.             System.out.println(" " + protocols[i]);  
  10.         }  
  11.         protocols = socket.getEnabledProtocols();  
  12.         System.out.println("Enabled Protocols: " + protocols.length);  
  13.         for (int i = 0; i < protocols.length; i++) {  
  14.             System.out.println(" " + protocols[i]);  
  15.         }  
  16.     }  

相關推薦

https站點強制通訊協議TLSv1.2

現在網路安全原來越重要,好多公司網站需要ssl支援,也就是要求客戶通過https訪問公司站點,由於TLSv1.1容易被黑客攻擊,於是很多企業要求站點只提供TLSv1.2協議支援。 對Java 程式,TLSv1.2的實現中, oracle 從JDK1.7 update96以後

專案-智慧快遞櫃(通訊協議2-SOCKET)

專案-智慧快遞櫃(終端篇1-業務流程)https://blog.csdn.net/arno1988/article/details/84983815 專案-智慧快遞櫃(終端篇2-管理後臺)https://blog.csdn.net/arno1988/article/details/8498481

1.2分布式-網絡通訊協議

未收到 正常 緩沖區 使用 什麽是 fab gmp 大小 報文 網絡協議: TCP/IP 和UDP/IP TCP/IP TCP/IP(Transmission Control Protocol/Internet Protocol)是一種可靠的網絡數據傳輸控制協議。定義了主機

[Golang] 從零開始寫Socket Server(2): 自定義通訊協議

        在上一章我們做出來一個最基礎的demo後,已經可以初步實現Server和Client之間的資訊交流了~ 這一章我會介紹一下怎麼在Server和Client之間實現一個簡單的通訊協議,從而增強整個資訊交流過程的穩定性。  

易學筆記-系統分析師考試-第4章 資料通訊和計算機網路/4.2 網路體系結構與協議/4.2.2 常見的網路協議

易學筆記 十年IT經驗個人學習筆記分享: 開發語言:C/C++/JAVA/PYTHON/GO/JSP WEB架構:Servlets/springMVC/springBoot/springClound 容器架構:Docker容器/Docker叢集/Docker與微服務整合/

C#輕量級通通訊元件StriveEngine —— C/S通訊開源demo(2) —— 使用二進位制協議 (附原始碼)

前段時間,有幾個研究的朋友對我說,ESFramework有點龐大,對於他們目前的專案來說有點“殺雞用牛刀”的意思,因為他們的專案不需要檔案傳送、不需要P2P、不存在好友關係、也不存在組廣播、不需要伺服器均衡、不需要跨伺服器通訊、甚至都不需要使用UserID,只要客戶端能與服務端進行簡單的穩定高效的通訊就可以了

Spring4.3.3 WebSocket-STOMP協議整合 (2.1)-WebSocket-stomp子協議通訊小栗子

                      上一篇中說到:stomp - jsp之間的通訊,是通過stomp,socket.js/stomp.js實現的通訊。如果覺得寫jsp或者js麻煩,或者不怎麼會js,不是太懂,可以用webSocketStomp的client來測試。下面

基於 Netty 的可插拔業務通訊協議的實現「2」特定業務訊息物件的設計

本文為該系列的第二篇文章,設計需求為:服務端程式和眾多客戶端程式通過 TCP 協議進行通訊,通訊雙方需通訊的訊息種類眾多。上一篇文章詳細描述了該通訊協議的二進位制資料幀格式以及基本 Java 訊息類,假設通訊雙方「服務端、客戶端」均由 Netty 框架構建而成,

andeoid4.x強制使用TLSv1.2

最近做安全性比較高的專案,上級最近出臺新規要求必須Https+TLSv1.2, 由於android20才開始預設使用TLS1.2,4..0-5.0一下預設的都是TLS1.0, 遇到一些坑費了點時間,網上查了好多資料,沒有比較完整清晰的資料, 所以解決後記錄一下,方便自己方便

gh0st通訊協議解析(2

Gh0st通訊協議解析(2) 從被控端主動去連線主控端開始談起。世間萬事萬物有始有終,宇宙環宇的動力起點就是上帝的那一推之力。當然,主控端與被控端的互動總是從被控端主動連線到主控端開始的,讓我們從發起連線這個引爆點談起…… **********************

TCP/IP協議2):網絡設備

數據包 服務器 網絡設備 風暴 二層交換機 不同的 中繼器 tcp/ip 解決 1、中繼器(Repeater) 中繼器工作在OSI的一層,我們知道,超5類線的傳輸距離最大為100米,超過這個距離信號就會衰減,中繼器就是為了防止信號變差,將網絡信號進行再生和重定時。 2、

IIS開多個HTTPS站點

ets ron www orm pro 默認 system32 app 站點 默認情況一個服務器的IIS只能綁定一個HTTPS也就是443端口 要實現多個站點對應HTTPS只能更改IIS配置 地址:C:\Windows\system32\inetsrv\config\a

使用BeautifulSoup爬取“0daydown”站點的信息(2)——字符編碼問題解決

snippet sni 結束 編碼錯誤 charset utf 教程 作者 request 上篇中的程序實現了抓取0daydown最新的10頁信息。輸出是直接輸出到控制臺裏面。再次改進代碼時我準備把它們寫入到一個TXT文檔中。這是問題就出來了。 最初我的代碼例如以

由於各個廠家的通訊協議都不兼容有些還必須獲得

tag 郵件傳輸 源地址 能夠 彩頁 它的 如果 通過 獲得 有時又稱為"數據鏈路測過"或"網絡接口層",通常包括操作系統中的設備驅動程序和計算機中對應的網絡接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細節。 網絡層 有時又稱為"網絡互聯層",處理分組在網

Kafka的通訊協議

單位 編碼 ace 處理 lap 部分 nap spa head Kafka的Producer、Broker和Consumer之間采用的是一套自行設計的基於TCP層的協議。Kafka的這套協議完全是為了Kafka自身的業務需求而定制的,而非要實現一套類似於Protocol

C#高性能大容量SOCKET並發(八):通訊協議

pad 英文 透明 優勢 sock ase sha dev lac 協議種類 開發Socket程序有兩種協議類型,一種是用文本描述的,類似HTTP協議,定義字符集,好處是兼容性和調試方便,缺點是解析文本會損耗一些性能;一種是用Code加結構體,定義字節順序,好處是性能高,

MQTT是IBM開發的一個即時通訊協議,構建於TCP/IP協議上,是物聯網IoT的訂閱協議,借助消息推送功能,可以更好地實現遠程控制

集合 cap 消息處理 簡易 遠程控制 mes ogr 設計思想 成本 最近一直做物聯網方面的開發,以下內容關於使用MQTT過程中遇到問題的記錄以及需要掌握的機制原理,主要講解理論。 背景 MQTT是IBM開發的一個即時通訊協議。MQTT構建於TCP/IP協議上

用curl訪問HTTPS站點並登錄(對HTTP返回的結果特別清楚)

type .com nss int lai on() tftp cap 參數 開發網站,少不了測試。現在的網站為了加強安全性,都啟用了HTTPS協議。所謂HTTPS,也就是HTTP文本在SSL協議中傳輸。用curl命令行來測試HTTPS站點是個很有用的功能,寫點腳本,就可以

專利:結構化大數據通信協議2

結構化大數據通信協議說明2:數據的唯一性是實現“數據全球通”的基礎在班、組這樣的小環境中可以用每個人的姓名而區分出每一個人,然而在全國範圍內,由於人數太多,重名的很多,因此僅靠姓名就不能準確無誤地識別出每一個人。大數據時代以前的關系數據庫中的數據只是應用於某個機構內部,因此各個數據就容易識別,然而如果把關系數