2015-06-03 159 views
1

我已經涉足了C++ rest sdk一段時間了,並且已經完成了一個服務器和客戶端的完整工作。C++ rest sdk https服務器實現(Windows)

的問題是從客戶機到服務器的HTTP請求似乎永遠是明文所以當我想嘗試登錄,

的URI是http:// ...登錄電子郵件[email protected] &密碼= 123456 我新的網絡編程,但這似乎並不十分安全,從我瞭解的https是要走的路......到目前爲止沒有資料雖然作爲關於如何使用casablanca C++ rest sdk設置http over SSL服務器。

有沒有人試過這樣做?也許我需要一個額外的圖書館專門爲此?

+0

C++ REST SDK尚不支持HTTPS。他們的服務器功能仍被視爲測試功能,尚未完成。 – goldfire

+0

那麼有沒有什麼辦法可以手動實現這一點,而無需觸摸REST SDK源代碼,或者我必須取消該項目並從另一個庫(如POCO)開始? –

+0

SSL不會完全解決您的問題,因爲它不會對URL進行加密,並且已將密碼放在URL中。除了使用SSL之外,您還需要將其移入請求標頭或JSON有效內容。 – gigaplex

回答

1

casablanca支持在所有平臺上使用http_client的客戶端上的HTTPS,它只與HTTPS在Windows上工作的http_listener一起使用。要使用https,只需在將http_client或http_listener對象構建爲https時指定URI的方案,例如'https://www.google.com'。

+0

在監聽器上使用HTTPS其實並不那麼簡單。您仍然需要手動將證書添加到偵聽端口。 – gigaplex

+0

是的..用戶必須手動廣告證書和代碼明智只使http_listener爲https –

+1

如何禁用證書驗證?我嘗試使用set_validate_certificates(false),但似乎不起作用。有沒有其他方法? –

1

這就是我在http_listener代碼中看到的內容。它似乎根本不支持Windows。

#ifndef _WIN32 
    /// <summary> 
    /// Get the callback of ssl context 
    /// </summary> 
    /// <returns>The function defined by the user of http_listener_config to configure a ssl context.</returns> 
    const std::function<void(boost::asio::ssl::context&)>& get_ssl_context_callback() const 
    { 
     return m_ssl_context_callback; 
    } 

    /// <summary> 
    /// Set the callback of ssl context 
    /// </summary> 
    /// <param name="ssl_context_callback">The function to configure a ssl context which will setup https connections.</param> 
    void set_ssl_context_callback(const std::function<void(boost::asio::ssl::context&)> &ssl_context_callback) 
    { 
     m_ssl_context_callback = ssl_context_callback; 
    } 
#endif 
+0

我看到這段代碼,但文檔中沒有提到有關在Windows中不支持ssl的問題。 – mostafa88

+0

是的,我知道。不過,我花了幾周的時間試圖讓SSL在Windows上工作。我終於在卡薩布蘭卡Github的一個問題上問到這是否是這種情況。我收到的唯一回應是它似乎不受支持。 – Michael