2011-10-12 83 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,增加了新功能。「