2012-06-05 37 views
-3

我試圖用SSL手動處理而不使用libs作爲OpenSSL等......而且我在第一步用客戶端的Hello消息出現問題。SSL客戶端 - 你好,消息正文結構

technet

It must consist of: 
ClientVersion 3,1 
ClientRandom[32] 
SessionID: None (new session) 
Suggested Cipher Suites: 
    TLS_RSA_WITH_3DES_EDE_CBC_SHA 
    TLS_RSA_WITH_DES_CBC_SHA 
Suggested Compression Algorithm: NONE 

在我的代碼(C/C++),我已經創建的消息在這條路上:

char *request = "ClientVersion 3,1\r\nClientRandom[32]\r\n 
SessionID: None (new session)\r\n 
Suggested Cipher Suites:\r\n 
TLS_RSA_WITH_3DES_EDE_CBC_SHA\r\n 
TLS_RSA_WITH_DES_CBC_SHA\r\n 
Suggested Compression Algorithm: NONE\r\n"; 

不過的recv()之後的功能,我有0結果,我的消息結構有什麼問題?

PS 在HTTP-proto中有一個地方,當它必須是雙\ r \ n(分割標題和正文消息)時,可能是,必須有這樣或沒有的東西?

回答

8

你需要仔細看看RFC 2246,而不是僅僅做一些事情。例如,消息的元素之間的新線是你想象中的一個角色。

但是,爲什麼你認爲你可以使用SSL'手動'是一個謎。你不能,也不需要。重新實現SSL是一項重要任務,您沒有足夠的資源來完成它。使用你的庫:OpenSSL,JSSE等

+0

這不是一個謎,這是正常的。我認爲我可以工作,因爲:somebobdy可以做到這一點(爲什麼不是我?),它不是第三方libs,它可以讓你免於思維過程,你應該知道SSL如何正確工作,我已經使用HTTP,FTP, POP3,使用C/C++的TCP上的IMAP,並且不使用現成的東西,也爲這項工作實施子字符串搜索經典算法。這樣的工作有更多的知識目標。 – Secret

+1

@ user167908,SSL/TLS比HTTP,FTP,POP3和IMAP更難一些。這不是像這些協議那樣簡單的基於文本的請求/響應模型。仔細看一下RFC(至少在它談論XDR的地方)。通常需要一段時間才能理解它。弄錯事情並獲得不安全的實現很容易。查看Wireshark等數據包,瞭解發生了什麼。您試圖發送的僞命令僅僅是對消息的文本表示:有用的,但很大程度上簡化了。 – Bruno

+1

@ user167908這是不正常的,這是一個謎。你可以自己做*如果*你可以實現或連接幾十個密碼套件,並且你知道如何閱讀一個RFC。這裏的證據表明你沒有資格,對不起。有幾種高質量的實現已經可用。爲什麼你認爲你想要另一個仍然是一個謎。 – EJP