web-dev-qa-db-ja.com

JWT:良い秘密鍵とは何ですか?また、Node.js / Expressアプリに保存する方法は?

まず、秘密鍵を生成する良い方法は何ですか?キーボードにランダムキーをたくさん打ち込んでキーを生成する必要がありますが、これにはもっと良い解決策が必要です。非常に優れたキーを生成する方法を説明します。

第二に、キーを保存する良い方法は何ですか?アプリケーション構成にキーを書き込むことはできますが、それはソースコードの侵害がシステム全体を侵害することを意味します。 Node.js Expressアプリに秘密鍵を保存する良い方法は何ですか?

39
Sam

プログラムでシークレットを生成するには、ノードの crypto.randomBytes() を使用できます

var crypto = require('crypto');
var jwt = require('jsonwebtoken');

crypto.randomBytes(256, function(ex, buf) {
  if (ex) throw ex;
  var token = jwt.sign({foo: 'bar'}, buf);
  var decoded = jwt.verify(token, buf);
});

これを保存することに関して、あなたは絶対に正しいです、あなたは間違いなくあなたのソース管理に秘密を保存するべきではありません。より良い方法は、process.env.MY_SECRETなどの環境変数からこのような機密情報をロードすることです。

私が見た別のあまり一般的ではないパターンは、コードとは別に保存されたファイルからシークレットをロードすることです。たとえば、ノードアプリに~/.myapp/secrets.jsonのJSONファイルを検索させることができます。

31
Andrew Lavers