Apache之后的CherryPy SSL

时间:2012-08-24 17:42:32

标签: python ssl apache2 cherrypy

有没有办法设置CherryPy在Apache2后面运行时使用SSL而不配置Apache2为CherryPy做SSL?

我找到了关于在CherryPy中使用SSL并配置Apache2为CherryPy执行SSL工作的多个教程,但是我还没有找到一个教程来处理在Apache2之后使用SSL和CherryPy而不配置Apache2来执行SSL工作

2 个答案:

答案 0 :(得分:3)

对gcbrizan的答案进行了解释,你不能因为理解https请求所需的第一步是先解密连接。 SSL / TLS有两种工作模式;隧道掘进和STARTTLS;在后者中,正常连接开始,并且在某个时刻,一旦双方已经建立了他们想要做的任何连接;一个对等方要求另一个开始加密连接。 ESMTP(电子邮件)使用此机制。

然而,

HTTP没有starttls功能;所以使用隧道代替。在传输任何http流量之前,双方都会启动安全隧道;客户端验证服务器证书的正确性,服务器可以为客户端执行相同的操作(如果需要/请求)。只有在所有这一切发生后,客户端才会发送页面请求。

是apache(或任何其他代理)来执行此操作,这意味着它必须将所有加密流量传递到源服务器(在您的问题中为cherrypy),因为流量已加密,代理没有机会“在这里发送此请求,但那里请求”。如果它只是通过未经修改的所有流量,那么它根本就没有做任何有用的事情;您也可以直接公开原始服务器。

答案 1 :(得分:2)

你不能这样做(我也不会尝试)。首先,Apache将比CherryPy更好地终止SSL(如果没有其他原因,那么性能)。其次,它根本不起作用,因为Apache说HTTP和HTTPS实际上是用HTTP加密的,所以你需要在获得Apache可以理解的任何HTTP之前处理SSL。