TLS 協議

1、背景php

參與了一個Sofa-RPC開源項目,認領了TLS的任務,記錄下此次寶貴的經歷,並感謝章哥的信任以及在整個過程當中對個人幫助。html

負責的部分不難,主要是使用h2(HTTP 2加密)協議,完成RPC中,客戶端對服務端的請求調用。java

 

2、過程jquery

剛接觸時,徹底沒接觸過這方面。從零開始,查詢SSL、TLS、數字證書、TLS handshake等資料,有了一些認識。git

 

1.SSL vs TLStomcat

Transport Layer Security(TLS),它主要是提供數據的隱私性(加密,不被破解)和完整性(不被篡改,不被冒充)。安全

下面是SSL與TLS協議版本一覽,TLS的前身是SSL,如今雖然SSL已通過時不用了,可是它的名字仍然留用,使用TLS,其實就是使用SSL。(我當時糊塗了很久)學習

Protocol Published Status
SSL 1.0 Unpublished Unpublished
SSL 2.0 1995 Deprecated in 2011 (RFC 6176)
SSL 3.0 1996 Deprecated in 2015 (RFC 7568)
TLS 1.0 1999 Deprecation planned in 2020[11]
TLS 1.1 2006 Deprecation planned in 2020[11]
TLS 1.2 2008  
TLS 1.3 2018  

 

 

 

 

 

 

 

 

 

 

 

推薦一些連接,都是當時學習的腳印(前面部分,是阮一峯老師的文章,寫的淺顯易懂,看完能對傳輸安全協議,有個大致的認識):加密

http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html.net

http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

https://en.wikipedia.org/wiki/Transport_Layer_Security

 

2.OpenSSL vs JdkSSL

OpenSSL優點:

(1)加密速度要快

(2)加密支持技術更普遍

(3)同時支持APLN(協議協商)和NPN

(4)不受限於Java版本

 

爲了使用OpenSSL,推薦看下面的網址,裏面對第三方編譯OpenSSL的binaries(OpenSSL的安裝包)說明十分詳細。

https://wiki.openssl.org/index.php/Binaries

(由於官網提供的是OpenSSL源碼,須要本身下載並安裝許多程序,才能編譯成功,爲了省去沒必要要的時間,因此建議使用第三方的安裝。)

 

說一下開啓Netty中的OpenSSL時,遇到的坑。

https://netty.io/wiki/forked-tomcat-native.html

上面是官方給出的開啓OpenSSL的文檔,照着文檔各類嘗試,均告失敗,最後向netty項目提出issue,得出的結果是,須要升級netty的一些jar包,換上了最新netty jar包,問題解決。

 

3.debug

啓動參數 -Djavax.net.debug=all

 

4.怎麼肯定使用SSL的版本

相關文章
相關標籤/搜索