HTTPS筆記:使用 SSLEngine 為 aioserver 服務器提供 SSL 訪問支持


現在 HTTPS 的普及率是越來越高,閑來無事,花了二三天時間,為五年前寫的 aioserver 服務器提供了 SSL 訪問支持。

查看網上資料,為了提高服務器的高並發,建議使用:SSLEngine

網上搜索了一些關於 SSLEngine 的使用資料,看了后就照葫蘆畫瓢,開工。

其間一個問題困擾了我好幾個小時,在進行SSL握手的時候:

doUnwrap() 解包后, 有 2 種情況:

 1. 多數情況下: new HandshakeStatus: NEED_WRAP  ->  wrap() -> 完成 SSL 握手。

 2. 少數情況下: new HandshakeStatus: NOT_HANDSHAKING (已完成 SSL 握手)

 其中, 當 new HandshakeStatus: NOT_HANDSHAKING, 又有 2 種可能情況:

  1. netIn.remaining() > 0: 接收到的數據中包含了 HTTP Header 請求頭

  2. netIn.remaining() = 0: 不包含 HTTP Header 請求頭

 

我們需要對關於SSL握手協議過程中出現的不同情況進行不同的處理。

 

另外,我到現在還不清楚的地方:所有的請求共享一個 SSLEngine,還是根據每一個請求創建一個 SSLEngine: sslContext.createSSLEngine() ???

目前我的代碼中是根據每一個請求創建一個 SSLEngine: sslContext.createSSLEngine()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM