TYPO3 нехорошо поступает с Frontend пользователями — хранит пароли в открытом виде в базе данных. Да, есть расширения, позволяющие их шифровать, но их использование влечет за собой траблы с модулями регистрации, логина, бекенда и прочего. Я согласен, что зашивать в ядро шифрование жестко нельзя, но я убежден в том, что такая возможность в ядре должна быть. И должен быть механизм тихой и незаметной работы с паролями для расширений как в режиме шифрования, так и без него. Этот вопрос, насколько я знаю, решается для TYPO3 5.
На данном этапе я принял решение использовать открытые пароли для FE-пользователей в сочетании с SSL для бэкенда и страниц, где приватные данные могут передаваться клиенту. Для этого должны выполняться некоторые технические требования.
1. На уровне nginx должна быть включена поддержка SSL. Включается она параметром --with-http_ssl_module при компиляции. Узнать, есть у вашей сборки nginx поддержка SSL можно так:
$ /usr/sbin/nginx -V
2. Нужно создать и подписать сертификат SSL. Я генерил сертификат на маке, поэтому пользовался соответствующим мануалом. В интернете лежат автоматические генераторы, я их не пробовал.
3. Теперь нужно, чтобы при использовании SSL nginx передавал в fastcgi параметр, указывающий на это. В PHP он доступен по $_SERVER["HTTPS"] = 'on'. Добавляем в конфигурационный файл нужного виртуального хоста копию текущей конфигурации, а в секцию server добавляем информацию для активации SSL.
server { listen 443; server_name www.domain.ru; ssl on; ssl_certificate ssl/cert.pem; ssl_certificate_key ssl/webserver.nopass.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; access_log /var/www/domain.ru/logs/access.log main; error_log /var/www/domain.ru/logs/error.log; location / { root /var/www/domain.ru/htdocs; index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^(.*)$ /index.php last; } } # FCGI location ~ \.php$ { root /var/www/domain.ru/htdocs; fastcgi_pass_request_body off; client_body_in_file_only clean; client_body_temp_path /dev/shm/client_body_temp; fastcgi_param REQUEST_BODY_FILE $request_body_file; fastcgi_pass unix:/tmp/php.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/domain.ru/htdocs$fastcgi_script_name; include fastcgi_params; fastcgi_param HTTPS on; } location ~ /\.ht { deny all; } }
4. Теперь нам нужно научить TYPO3 переключаться в режим защищенного соединения. Для бэкенда это делается параметром $TYPO3_CONF_VARS['BE']['lockSSL'] = '2';, который говорит Тайпе, что в бекенд нужно пускать только по SSL, и редиректить если был запрос без него.
Теперь это выглядит как-то вот так примерно
5. Для фронтенда я воспользовался расширением https. В редакторе констант нужно подправить название домена сайта и все. После установки на нужных страницах галочки “только SSL” будут передаваться только по защищенному каналу.
UPD
Я посмотрел один автогенератор сертификатов на Руби. Он не генерирует беспарольный ключ для старта сервера, а в остальном вроде нормально работает.


Сертификаты удобно создавать на сервере нативно через OpenSSL. Все есть в комплекте.
Например так: http://www.impetus.us/~rjmooney/projects/misc/clientcertauth.html