2011-10-12 1 views
1

В настоящее время наш проект не имеет никакой безопасности SSL. Доступ ко всем URL-адресам в проекте можно получить по URL-адресам, например http://www.something.com.Как реализовать SSL в symfony 1.4?

Теперь мы хотим изменить то же самое, что и https://www.something.com.

Кроме того, мы создали несколько веб-сервисов, которые возвращают данные Json. Эти веб-сервисы получают доступ к URL-адресам на мобильных устройствах, таких как Apple iphone и Blackberry. Urls для веб-сервисов начинаются с HTTP: //

Теперь мы также хотим, чтобы обеспечить такой же таким образом, что эти веб-сервисы теперь могут быть доступны только через HTTPS протокол, как https: //

+2

SSL обрабатывается вашим веб-сервером, а не вашим языком программирования/каркасом, за исключением того, что вы внедрили свой собственный веб-сервер (что я сомневаюсь). Если вы используете стандартный веб-сервер, ваш вопрос относится к http://serverfault.com/ - и, пожалуйста, укажите, какой веб-сервер вы используете. – vstm

+0

@vstm мы используем веб-сервер Apache на Ubuntu. – user990703

ответ

2

Если вы хотите использовать HTTPS, вам нужно настроить Apache для этого. Есть много статей, описывающих, как вы можете это сделать на Ubuntu. Попробуйте найти «ubuntu setup ssl apache2» или около того.

Пример: http://www.linode.com/wiki/index.php/Apache2_SSL_in_Ubuntu

В нескольких словах: вы должны создать новую запись NameVirtualHost в конфигурации Apache, и сделать его слушать порт 443 (по умолчанию порт HTTPS) и установки по сертификации. Если ваш веб-сайт является общедоступным веб-сайтом, то я предполагаю, что вам не нужна самоподписанная сертификация (браузер сообщит пользователю, что сертификат подписан самим сервером, поэтому ему нельзя доверять). Ищите сертификацию SSL в сети, я использовал Verisign для одного из моих проектов. Между сертификатами не должно быть больших различий, пользователи обычно не знают о том, что происходит под капотом, хотя я бы предложил купить его по более известному имени (пользователям это может понравиться лучше).

Symfony не несет ответственности за ваши запросы на уровне HTTPS, если ваш веб-сервер настроен правильно, запрос поступает через HTTPS, и он будет загружать PHP и Symfony для генерации ответа и отправки его через HTTPS. Что Symfony может сделать для вас - это перенаправить страницы между http на сайт https, если вы хотите (или хотите ограничить некоторые страницы, например, все небезопасно, кроме страниц входа, регистрации и изменения пароля). К сожалению, я не знаю никакого хорошего плагина, чтобы решить эту проблему, но в основном вы должны написать фильтр, который запускается по любому запросу, непосредственно перед обработкой модуля обработки/действия.

Этот источник выглядит хорошо: http://blog.tigregroup.com/programming/creating-an-ssl-redirect-filter-in-symfony/

НТН

1

Хей,

написать это в .htaccess, и это работает.

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

Как это улучшает принятый ответ? –

0

Есть два плагина для использования:

sfSslRequirementPlugin: "Обеспечивает поддержку шифрования SSL для действий" и sfSslRequirementExtraPlugin: «Повышение уровня безопасности приложений, с использованием протокола SSL только при необходимости, через полностью параметризованную архитектуру. Этот плагин основан на sfSslRequirementPlugin, добавляющем новые возможности ».