2014-01-06 40 views
2

我正在寫一個接受傳入TCP連接的服務器,我想在C中實現一個簡單的方法來檢測連接是否只是檢查接收到的幾個字節的SSL。任何幫助?在C中檢測SSL協議

+3

指定一個特定的端口?有一個初始談判階段,第一部分是ClientHello消息; http://security.stackexchange.com/questions/34780/checking-client-hello-for-https-classification –

+0

SSL而不是什麼?它與你必須檢測的其他協議很重要。例如,如果您必須檢測它是SSL還是HTTP,那非常簡單 - 爲HTTP發送的第一個字符始終是大寫字母,而對於SSL,它永遠不會。 –

回答

2

由於建立連接後的第一條消息應該是來自客戶端的「hello」消息,這是可能的。消息中的第一個字段是SSL/TLS版本,然後是時間戳 - 取決於普通客戶端使用的應用層協議,這可能足以確定客戶端連接是否使用SSL/TLS。

有關消息結構的更多詳細信息,請參見http://tools.ietf.org/html/rfc5246#section-7.4

編輯:這裏有一個很好的回答非常類似的問題:https://security.stackexchange.com/questions/34780/checking-client-hello-for-https-classification