2017-06-22 131 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