Soru Heroku Config Gizli Anahtar Temel Hatası


Sadece ilk uygulamamı Git'i kullanarak Heroku'ya itti ve hemen bir Interanl Sunucu Hatası var.

Uygulamanızın yapılandırmasında config.secret_key_base ayarlamalısınız.

Bunun nedeni, .gitignore dosyamda aşağıdaki dosyadır:

Yapılandırma / başlatıcılar / secret_token.rb

Burada bulunan .gitignore dosyası için standart bir şablon kullanıyorum: https://github.com/github/gitignore/blob/master/Rails.gitignore

Benim sorum: Ekstra güvenlik için bu anahtarı doğrudan Heroku ile ayarlamalı mıyım ve eğer öyleyse nasıl yapmalıyım?

VEYA

Bu satırı sadece .gitignore dosyasından kaldırmalı mıyım?


24
2017-09-01 09:15


Menşei


İçin bir değerin var mı config.secret_key_base içinde config/initializers/secret_token.rb (burada yapıştırmayın). - ScottJShea
Teşekkürler evet ve bu dosyayı (diğerleri ile) Heroku'ya ittim - tommyd456
Gönderinizi daha iyi okursam yardımcı olacağını biliyorsunuz. Afedersiniz - ScottJShea
Bir dakika bekle - Ben sadece .gitignore kontrol ettim ve dosya altta listelenir bu yüzden nedeni olacak. Ama bu bana sormamı sağlıyor - Bu anahtarı dosyayı transfer etmek yerine doğrudan Heroku'ya koymalı mıyım? - tommyd456
Bu arada şablonum var. github.com/github/gitignore/blob/master/Rails.gitignore - tommyd456


Cevaplar:


Nick Ginanto'nun belirttiği gibi, bir ENV değişkeni olarak gizli jetonu ayarlamaya ek olarak, bu işi yapmak için aşağıdakilere de ihtiyacınız var.

Kaldır config/initializers/secret_token.rb itibaren .gitignore

Bu dosyadaki satırı şu şekilde değiştirin:

MyApp::Application.config.secret_token = ENV['SECRET_TOKEN']

Bu, daha sonra Heroku'nun yapılandırma vars ile ayarladığınız gizli jetonu alacak.

Jetonun yerel ortamınıza alınabilmesi için eklemeniz gerekir. Burada bir dizi seçenek var ama Heroku'ya en yakın olanı kullanmak Foreman gem ile birlikte .env proje kökünüzdeki dosya. .env secret_token olması gerekecek

SECRET_TOKEN=NKUd7gisd7fueAISDfg....

Kullanabilirsiniz rake secret jeton oluşturma komutu. Emin ol .env dosya eklendi .gitignore.

Bütün bunlar ile Heroku ve yerel için farklı semboller olacak ve sizin belirtiniz sizin kaynak kontrolünüzde olmayacaktır.


32
2017-09-02 14:41



Teşekkürler - sonunda Figaro gem kullanarak sona erdi. - tommyd456
Güzel. Figaro, tüm bunları ayarlamak için harika bir seçenektir. Sadece Figaro'nun yüklenmesinden önce gerekli olabilecek bazı yapılandırma varyantlarının olabileceğini unutmayın (örn. Unicorn.rb kullanıyorsanız). Bu durumda, Figaro ile birlikte bu öğeler için hala .env kullanabilirsiniz. - nmott
Referans için burada heroku config'un bağlantısı var: devcenter.heroku.com/articles/config-vars - Jason Axelson
Ayrıca sen de çalıştırmak istiyorsun foreman run rails server .env dosyasını oluşturduktan sonra - Jason Axelson


Bunu bir Heroku ortam değişkeni olarak ayarlayın ve geliştirme için bir geri dönüş sağlayın

Sabit kodlu sırrı kaldırın, gizli başlatıcıyı sürüm kontrolüne göre kontrol edin, Heroku'da bir ortam değişkeni ayarlayın ve geliştirme ve sahne için bir geri dönüş sağlayın.

1. Sabit kodlu sırrı kaldırın ve isteğe bağlı olarak bir geri dönüş sağlayın:

Üretimde kodlanmış şifreyi kaldırmak için config / initializers / secure_random.rb dosyasını düzenleyin. Sunucunuzu başlatma şeklinizi değiştirmemek isterseniz, isteğe bağlı olarak üretim dışı ortamlar için bir geri dönüş ekleyin.

secret = Rails.env.production? ? ENV['SECRET_TOKEN'] : "top_secret_token"
YourApp::Application.config.secret_key_base = secret

2. Yapılandırmayı / başlatıcıları / secure_random.rb öğesini git konumuna doğru denetleyin.

Düzenle .Gizliyin ve satırı kaldırın:

config/initializers/secret_token.rb

Şimdi dosyayı imzala.

3. Heroku'nun gizli anahtarını ayarlayın

Koşmak:

rake secret

rastgele alfanümerik bir dizi oluşturmak için. Debian için çok uzun zaman önce olduğu gibi, anahtar üretme algoritmasında gelecekteki bir zayıflığın keşfedilmesi durumunda, anahtarın biraz da elle karıştırılmasıyla iki kat daha fazla emin olmak isterim. Muhtemelen bu gereksizdir.

Sonraki çalışma:

heroku config:set SECRET_TOKEN=paste_random_string_here

bir Heroku ortam değişkeni olarak sırrı ayarlamak için. Heroku'ya konuş ve işin bitti.


9
2018-02-06 11:03





Bunun için ENV değişkenini kullanmak en iyisidir ..

Bu sayede gerekirse tüm çerezleri hızlı bir şekilde geçersiz kılabilir, ortam başına ayrı bir sırrı vardır ve dosya ile özel bir şekilde ilgilenmeye gerek yoktur.

heroku config:set SECRET_TOKEN=ertbs45tnsb3aw5bsxdrt54...

uygulamayı kopyaladıysanız veya başka bir uygulama ayarına sahipseniz, her uygulamanın kendi gizli_toku olacaktır. Yerel makinenizde sadece aynı değişkeni kurun


5
2017-09-01 09:57



teşekkürler - farklı ortamlarla ilgili olarak bu ayarın nasıl yapılacağına dair biraz daha bilgi verebilir misiniz? - tommyd456
SECRET_TOKEN oluşturmak için komisyon sırrını kullanmalısınız: heroku config:set SECRET_TOKEN=$(rake secret) - dsimard