Исключительная базовая ошибка конфигурации Heroku Config
Просто нажал мое первое приложение на Heroku с помощью Git и сразу получил ошибку Interanl Server.
Вы должны установить config.secret_key_base в конфигурацию вашего приложения.
Это связано с тем, что в моем файле .gitignore включен следующий файл:
конфигурации/инициализаторы/secret_token.rb
Я использую стандартный шаблон для моего файла .gitignore, найденного здесь: https://github.com/github/gitignore/blob/master/Rails.gitignore
Мой вопрос. Должен ли я установить этот ключ через Heroku напрямую для дополнительной безопасности, и если да, то как?
ИЛИ
Должен ли я просто удалить эту строку из моего файла .gitignore?
Ответы
Ответ 1
В дополнение к установке секретного токена в качестве переменной ENV на Heroku, как описано Ником Джинанто, для выполнения этой работы вам также потребуется следующее.
Удалите config/initializers/secret_token.rb
из .gitignore
Измените строку в этом файле на:
MyApp::Application.config.secret_token = ENV['SECRET_TOKEN']
Затем вы получите секретный токен, который вы установили с конфигурационными конфигурациями Heroku.
Чтобы токен был выбран в локальной среде, вам нужно будет добавить его. Здесь есть несколько вариантов, но ближайший к Heroku - использовать бригадный мастер вместе с файлом .env
в корне вашего проекта. Для параметра .env
потребуется secret_token
SECRET_TOKEN=NKUd7gisd7fueAISDfg....
Вы можете использовать команду rake secret
для генерации токенов. Убедитесь, что ваш .env
файл добавлен в .gitignore
.
Со всем этим на месте у вас будут разные жетоны для Heroku и локальные, и ваш токен не будет в вашем исходном контроле.
Ответ 2
Установите его как переменную окружения Heroku и предоставите резервную копию для разработки
Удалите секретный код, проверьте секретный инициализатор на управление версиями, установите переменную среды на Heroku и предоставите резервную копию для разработки и этапа.
1. Удалите секретный код и, возможно, предоставите резервную копию:
Измените конфигурацию /initializers/secure _random.rb, чтобы удалить секретный код для жесткого кодирования. При желании можно включить резервную копию для непроизводственных сред, если вы не хотите менять способ запуска своего сервера.
secret = Rails.env.production? ? ENV['SECRET_TOKEN'] : "top_secret_token"
YourApp::Application.config.secret_key_base = secret
2. Проверьте config/initializers/secure_random.rb на git
Измените .gitignore и удалите строку:
config/initializers/secret_token.rb
Теперь зафиксируйте файл.
3. Установите секретный ключ для Heroku
Run:
rake secret
для генерации случайной буквенно-цифровой строки. Мне нравится делать это вдвойне, смешивая ключ немного вручную, на всякий случай, если в алгоритме генерации ключей обнаружена будущая слабость, как это случилось с Debian не так давно. Возможно, это не нужно.
Следующий запуск:
heroku config:set SECRET_TOKEN=paste_random_string_here
чтобы установить секрет как переменную среды Heroku. Развернитесь на Heroku, и все готово.
Ответ 3
Лучше всего использовать переменную ENV для этого.
Таким образом, вы можете сделать недействительным все файлы cookie быстро, если это необходимо, иметь отдельный секрет для каждой среды и не нужно обрабатывать файл особым образом.
heroku config:set SECRET_TOKEN=ertbs45tnsb3aw5bsxdrt54...
если вы дублируете приложение или используете другое приложение в героике, каждое приложение будет иметь свой собственный secret_token.
на вашей локальной машине просто настройте ту же переменную