2010-07-03 32 views
1

我對應用程序的安全性方面相當新穎。我有一個C++窗口服務(服務器),它偵聽特定端口的http請求。 http請求可以通過ajax或C#客戶端進行。由於現在有一些範圍的變化,我們必須保證用C++編寫的客戶端和自定義服務器之間的通信。使用定製服務器通過http進行安全數據傳輸

因此,我正在尋找保護此通信的選項。有人可以幫我解決我可以採取的方法來實現這一目標。

感謝 Dpak封裝

回答

0

假設你有一個現有的HTTP服務器(非IIS)和要實現HTTPS(這是很容易搞砸了,很難得到正確的),你有兩個選擇:

  1. 將服務器重寫爲COM對象,然後放在一起調用COM對象的IIS Web服務來實現Web服務。完成此操作後,可以將IIS配置爲通過HTTP和HTTPS提供Web服務。

  2. 安裝在同一臺主機上的代理服務器(Internet Security and Acceleration ServerApache with mod_proxy)爲您的現有的服務器,並設置代理服務器通過HTTPS聽錄音,然後反向代理的要求爲你服務。

第二個選項幾乎不需要更改您的應用程序;第一個選擇是更好的長期建築舉措。

0

使用HTTPS

+0

我可以在我的自定義服務器上實現https。如果可能的話,你可以向我提供我如何實現它的指針。 – deepak 2010-07-03 07:10:50

+0

你的意思是你正在用tcp/ip從頭編寫你自己的服務器?爲什麼?我建議你在現有的服務器上構建,如Apache或IIS。無論如何,有很多通信庫可以爲你做https,如果你google的話。 – 2010-07-03 07:12:42

+0

我有一個傳統的應用程序,它有自己的服務器,並監聽帶有xml字符串的http請求。可以通過http到IIS與SOAP消息進行比較。我必須對這個傳統應用程序進行更改以實現安全傳輸。 – deepak 2010-07-03 07:19:50

0

確保您的溝通渠道的好工具包是OpenSSL

也就是說,即使使用工具包,在實現安全層時仍有很多方法可能導致錯誤,從而導致數據泄露給攻擊者。您應該考慮使用現有的https服務器,並讓它將請求轉發到環回信道上的服務器。

0

使用OpenSSL或微軟的SChannel SSPI接口可以很容易地做到這一點。

它對你來說有多複雜取決於你如何構建你的服務器。如果它是傳統風格的BSD套接字「選擇」類型的服務器,那麼從OpenSSL或SChannel中獲取示例應該相當直接,並且可以快速完成某些工作。

如果您使用的是更復雜的服務器設計(異步套接字,IOCP等),那麼它會多一點工作,因爲這些示例並不傾向於展示這些內容。我在2002年爲Windows Developer Magazine撰寫了一篇文章,其中可以找到here,它顯示瞭如何將OpenSSL與異步套接字一起使用,並且如果需要,此代碼可以用於重疊的I/O和基於IOCP的服務器。

相關問題