2017-06-22 120 views
0

我是嵌入式系統工程師,所以我在這方面很新。我們試圖在我們的嵌入式系統和網絡服務器之間進行安全通信。首先,我們在我們的微控制器中實現HTTP連接。我只是連接到端口80我的Web服務器和發送簡單的GET請求,這個端口下面的例子:HTTP和HTTPS協議中的發佈請求

GET /foo.php?msg=test HTTP/1.1 
HOST: foo.com 

我的問題是,我們將如何把這個給HTTPS?我應該連接哪個端口? 以上GET請求的結構會有什麼不同嗎?我將不得不手動進行一些加密或連接到「https」鏈接,而不是「http」是enuogh安全通信。

感謝您的任何信息

回答

0

一個HTTP請求和HTTPS請求之間的唯一區別是,第一是發送在普通的TCP連接,而另一個是發送通過TLS連接,即:

  • 與HTTP你建立一個TCP連接,並通過該連接
  • 與HTTPS你建立一個TCP連接發送請求,升級這個連接TLS(包括正確的證書驗證等!),然後發送同樣的請求你通過這個連接使用了HTTP。

除此之外,我建議要麼使用已建立的HTTP庫,要麼仔細閱讀standard儘管HTTP看起來簡單,但它實際上並不是,並且在這裏有許多問題,用戶試圖做一個簡單的HTTP請求,然後絆倒他們並不期望的行爲。

例如,在您的情況下,服務器可能會發送具有內容長度的分塊編碼響應,或者只是通過連接關閉來結束響應。由於HTTP/1.1隱式啓用HTTP保持活動,它可能會等待同一連接上的進一步請求。你的代碼是否真正解釋了所有這些情況?

+0

當我們從服務器得到響應後。我們正在手動關閉通訊。 – cihaddogan

+0

@ user3077756:您如何知道服務器何時完成響應? –

+0

下面我們的服務器響應的例子。 + IPD,343:HTTP/1.1 200 OK 內容類型:應用程序/ JSON 服務器:Microsoft-IIS/8.5 X供電,通過:ASP.NET X供電-BY-的Plesk:PleskWin 日期:週四,2017年6月22日8時46分25秒GMT 的Content-Length:154 { \t 「成功」:1 } 當我看到 「成功」 我知道服務器responsed我。這處理大多數情況。對於其他情況,我們在嵌入式和服務器端實現其他連接句柄機制。 – cihaddogan