有沒有辦法將CherryPy設置爲在Apache2後面運行時使用SSL,而無需配置Apache2來爲CherryPy執行SSL?CherryPy後面的Apache SSL
我發現了有關在CherryPy上使用SSL並配置Apache2爲CherryPy執行SSL工作的多個教程,但是我一直無法找到一個教程,討論在Apache2後面使用SSL與CherryPy,而無需配置Apache2來執行SSL工作。
有沒有辦法將CherryPy設置爲在Apache2後面運行時使用SSL,而無需配置Apache2來爲CherryPy執行SSL?CherryPy後面的Apache SSL
我發現了有關在CherryPy上使用SSL並配置Apache2爲CherryPy執行SSL工作的多個教程,但是我一直無法找到一個教程,討論在Apache2後面使用SSL與CherryPy,而無需配置Apache2來執行SSL工作。
要解釋一下gcbrizan的答案,你不能因爲理解https請求所需的第一步是先解密連接。 SSL/TLS在兩種模式下工作;隧道和STARTTLS;在後者中,正常的連接開始,並且在某一時刻,一旦雙方已經建立了他們想要處理連接的任何事情,一個同伴要求另一個開始加密連接。 ESMTP(電子郵件)使用此機制。
但是,HTTP不具有starttls功能;所以使用隧道來代替。在任何http流量傳輸之前,雙方都會啓動安全隧道;客戶端驗證服務器證書的正確性,服務器可以爲客戶端執行相同的操作(如果需要/請求)。只有這一切發生,客戶端才發送頁面請求。
是阿帕奇(或任何其他代理)要做到這一點,這意味着它必須通過所有加密流量到源服務器(在你的問題的CherryPy),因爲通信進行加密,代理沒有機會「在此發送此請求,但在那裏請求」。如果它只是通過所有未經修改的流量,那麼它根本沒有任何幫助;你也可以直接暴露原始服務器。
我不認爲我見過稱爲「隧道」的模式(儘管這確實適用於隧道)。有些人稱之爲「隱含的」,而不是「明確的」,你需要就協議級別的升級達成一致。 – Bruno
你不能這樣做(我也不會嘗試)。首先,Apache比CherryPy更好地終止SSL(如果沒有其他原因,比性能)。其次,它將無法正常工作,因爲Apache會說HTTP並且HTTPS實際上是使用SSL進行HTTP加密的,所以您需要在獲得Apache可以理解的任何HTTP之前處理SSL。
您是否需要/希望在Apache Httpd後面運行CherryPy? – Bruno