如何仅在特定位置启用SSL

我有一个Apache服务于一个应用程序以及一个Web服务。 我想通过https的Web服务,但通过http的应用程序。 如何仅在特定位置启用SSL? 没有一个SSL指令似乎是有效的

<Location> </Location> 

目前我有

 <IfModule ssl_module> ServerName www.myserver.com SSLEngine on SSLCACertificateFile "/usr1/apache/conf/ssl/CAList.pem" SSLCertificateFile "/usr1/apache/conf/ssl/mine.crt" SSLCertificateKeyFile "/usr1/apache/conf/ssl/mine.pem" SSLVerifyClient require </IfModule> 

但是这使得ssl在我不想要SSL的页面上。

因为HTTPS使用不同的端口(端口443与HTTP端口80),所以需要在虚拟主机级别设置HTTPS。

所以你必须为整个网站设置HTTPS。

你可以做的是强制使用redirect(对于一个页面),RedirectMatch(对于与模式匹配的多个页面)或重写(对于包括或排除特定条件的更复杂的查询)的某些URL的HTTPS(甚至HTTP)。

所以如果有人去http://www.example.com/login,那么你可以redirect到https://www.example.com/login

你也可以redirect回去,所以如果有人去https://www.example.com/normal-page,那么你redirect回http&#x3002; 请注意,访问者需要经过完整的https连接协商,因为redirect与正常页面相同,因此在https会话build立后返回。

互联网正在迅速转向全面的HTTPS世界。 在整个站点上使用HTTPS有许多好处,与混合站点相比,它大大降低了复杂性。 某些function(例如,从浏览器获取位置)只能通过Chrome中的HTTPS工作,这只会增加。 作为另一个例子,HTTP / 2只能在所有浏览器上通过HTTPS工作。

同时,HTTPS的缺点几乎不存在,如果你有一些HTTPS站点(所以必须设置HTTPS,这可能是复杂的,主要缺点)。 是的,对初始加载时间有一个小的影响,但在此之后,如果设置正确,几乎没有明显的性能影响,除非在真正的古老硬件上运行或服务大量文件。

如果通过设置HTTPS的麻烦,我会强烈build议像EEAAbuild议的那样在任何地方使用它。