2011-10-12 55 views
1

目前我们的项目没有任何SSL安全。项目中的所有网址都可以通过诸如http://www.something.com之类的网址进行访问。如何在symfony 1.4中实现SSL?

现在我们想把它改成https://www.something.com

另外,我们创建了一些返回Json数据的webservices。这些网络服务可通过诸如Apple iphone和Blackberry等移动设备上的网址访问。 网址web服务以http://

现在我们也希望获得同样以这样的方式,这些web服务现在可以访问只能通过https协议喜欢https://开头

+2

SSL由您的网络服务器处理,而不是由您的编程语言/框架处理 - 除非您实施了您自己的网络服务器(我怀疑)。如果您使用标准网络服务器,那么您的问题属于http://serverfault.com/ - 请提及您使用的是哪个网络服务器。 – vstm

+0

@vstm我们在Ubuntu上使用Apache web服务器。 – user990703

回答

2

如果你想使用HTTPS你必须设置你的Apache来这样做。有很多文章描述你如何在Ubuntu上做到这一点。尝试搜索“ubuntu setup ssl apache2”左右。

例子:http://www.linode.com/wiki/index.php/Apache2_SSL_in_Ubuntu

在几句话:你必须创建在你的Apache配置一个新的了NameVirtualHost项,并使其侦听端口443(默认的HTTPS端口),并设置一个认证。如果你的网站是公共网站,那么我想你不需要自签名认证(浏览器会告诉用户认证是由服务器本身签署的,因此它不可信)。在网络上寻找SSL认证,我使用Verisign作为我的一个项目。认证之间不应该有任何大的差异,用户通常不会意识到发生了什么,尽管我会建议从一个更为知名的名称购买它(用户可能会更喜欢它)。

Symfony不负责在HTTPS级别处理您的请求,如果您的Web服务器配置正确,请求通过HTTPS发出,它将加载PHP和Symfony以生成响应并通过HTTPS将其发回。 Symfony可以为你做的是在http到https站点之间重定向页面,如果你想(或者想限制一些页面,比如登录,注册和修改密码页面,所有内容都不安全)。不幸的是,我不知道有什么好的插件可以解决这个问题,但基本上你必须编写一个过滤器,在请求处理模块/操作正在处理之前触发任何请求。

此源看起来是不错的:http://blog.tigregroup.com/programming/creating-an-ssl-redirect-filter-in-symfony/

心连心

1

HEJ,

写在你的.htaccess和它的作品。

RewriteEngine On 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
+0

这是如何改善接受的答案? –

0

有两个插件的使用:

sfSslRequirementPlugin: “提供了行动支持SSL加密” 和 sfSslRequirementExtraPlugin:“增强应用程序的安全性,使用仅在需要时SSL协议,通过完全参数化的架构,这个插件基于sfSslRequirementPlugin,增加了新功能。“