我有一個web服務可能綁定到ssl或純http。 Java客戶端配置爲了解服務器主機和端口。當客戶端連接時,我構建了服務器端點,如http://host:port/service。客戶端不知道服務器是否使用ssl - 服務器始終綁定到單個端口,以使其安全或不安全。現在,問題是如何讓客戶端在不引入其他參數的情況下發現這一點?我可以質疑純HTTP請求,然後回退到ssl(或反過來)在某個異常?或者我必須明確地爲客戶端引入新的連接參數?如何正常檢測SSL
4
A
回答
3
在服務器端,您可以使用像Grizzly's port unification實現的機制。這可以用於在同一端口上提供HTTP和HTTPS。這取決於這樣一個事實,即在這兩種情況下,客戶端都會首先進行對話併發送HTTP請求或SSL/TLS客戶端Hello消息。這在服務器端非常方便(儘管我不確定推薦在同一個端口上運行兩個協議)。
但從客戶的角度(這是你問什麼),那的後果是:
- 事實上,客戶端先發言意味着它將總是首先嚐試。如果您嘗試將SSL/TLS轉換爲普通的HTTP服務,反之亦然,那麼預計會出現某種異常。
- 如果服務器使用端口統一,那麼您將無法可靠地發現問題。
拋開端口統一(畢竟這是一種罕見的情況),您可以嘗試緩存過去嘗試的結果。
更爲重要的是,從安全角度考慮,不知道應該使用哪種協議,引入了一個漏洞:系統將開放到降級攻擊(以類似的方式爲blindly relying on automatic redirects會)。如果您的用戶代理支持HSTS,那麼值得研究一下(儘管它需要用戶代理記住哪些站點將與HTTPS一起使用)。
無論哪種方式,如果您關心安全性,您必須必須配置客戶端知道何時使用https://
。
相關問題
- 1. 如何使用ssl檢測網站
- 2. java如何檢測檢查異常?
- 3. 如何檢測WCF客戶端何時無法正常關閉?
- 4. 正常檢測到用戶無法支持來自ASP.net的SHA256 SSL連接
- 5. 在即時SSL檢測
- 6. 檢測是否支持SSL
- 7. 檢測SSL SNI支持
- 8. ssl無法正常工作
- 9. 正常組件如何檢測鼠標事件
- 10. 如何檢測AWS實例是否完全正常工作
- 11. 如何在python中檢測http和https服務是否正常?
- 12. Git如何檢測您從中拉出的正常存儲庫?
- 13. 如何檢測Linux上扭曲的非正常斷開連接?
- 14. 常規連接正常,但SSL問題
- 15. pygame碰撞檢測工作不正常
- 16. 碰撞檢測不能正常工作
- 17. 正常塊後檢測到堆損壞
- 18. touchesMoved檢測不能正常工作
- 19. GameQuery碰撞檢測不正常
- 20. 檢測到堆損壞:正常塊後
- 21. 碰撞檢測無法正常工作
- 22. 如何檢測二維數組中的異常值檢測?
- 23. 異常檢測
- 24. 檢測異常
- 25. 檢測異常 - 如果
- 26. XCode:異常。如何檢測原因?
- 27. 如何檢測CLR拋出的異常?
- 28. Rails和ajaxForm - 如何檢測異常
- 29. 如何測試輸入是否正常
- 30. 如何使用Selenium檢測頁面上的SSL是否損壞
這看起來像我以後的事情。安全是一個問題,否則首先不會有SSL。但是,在這種特殊情況下,這不是什麼大問題,因爲我們需要的只是加密流量,認證不是問題。事實上,在這種情況下,客戶端實際上是一個服務器節點,它調用同一類型的另一個節點(這是羣集中的某種談話)。我只是需要一個很好的捷徑來避免引入一個新的參數。聽起來這樣做沒有可靠的方法,但我會玩弄港口統一thingy,聽起來很有趣,謝謝! – Dima 2012-04-27 10:25:42
服務器的身份驗證(加密之前)始終是一個問題,除非您確定最多可以擁有無法根本改變流量的被動攻擊者(竊聽者)。 – Bruno 2012-04-27 10:42:31
是的,就是這樣,竊聽者在我的情況下不是威脅 – Dima 2012-04-27 15:09:43