web-dev-qa-db-ja.com

OpenSSLを使うと「ランダムな状態」を書けないというのはどういう意味ですか?

私は自分のサーバの管理セクションを保護するために自己署名SSL証明書を生成しています、そして私はOpenSSLからこのメッセージを受け取り続けます:

「ランダムな状態」を書き込めない

これは何を意味するのでしょうか?

これはUbuntuサーバー上にあります。 libsslを修正して修正しました 最近のセキュリティ上の脆弱性

377
Luke Francl

実際には、これが発生する最も一般的な理由は、ホームディレクトリの.rndファイルがアカウントではなくrootによって所有されていることです。クイックフィックス:

Sudo rm ~/.rnd

詳細は、 OpenSSL FAQ からのエントリーです。

Opensslコマンドラインユーティリティは、 "PRNG not seed"エラーメッセージを表示して中止しないことがありますが、 "random state"を書き込めないことを訴えます。このメッセージは、デフォルトのシードファイルを参照しています(前の回答を参照)。考えられる理由は、RANDFILEもHOMEも設定されていないため、デフォルトのファイル名が不明であることです。 (この場合、現在のディレクトリで0.9.6までのバージョンのファイル ".rnd"を使用していましたが、これは0.9.6aで変更されました。)

そのため、RANDFILE、HOME、およびファイルシステム内のそれらの場所への書き込み権限を確認します。

すべてが順調に進んでいるようであれば、 strace を付けて実行して、正確に何が起こっているのかを見ることができます。

532
Ville Laurikari

私はこの質問がLinux上にあることを知っていますが、Windows上で私は同じ問題を抱えていました。それが機能するためには、 "管理者として実行"モードでコマンドプロンプトを起動する必要があることがわかりました。それ以外の場合は、同じ結果になります。「ランダム状態」エラーを書き込めません。

246
Beachhouse

Windowsプラットフォームでのもう1つの問題は、コマンドプロンプトを管理ユーザーとして実行していることを確認することです。

これが何度私を悩ませたのかわかりません….

37
joel

どうやら、私はシードファイルへの許可を得るためにOpenSSLをrootとして実行する必要がありました。

15
Luke Francl

私はWindowsサーバー上で同じことをしました。それから私はvars.batを変更することによって考え出しました:

set HOME=C:\Program Files (x86)\OpenVPN\easy-rsa

それから最初からやり直すとすべてがうまくいくはずです。

12
Jusuf

私にとっての問題は、私のホームディレクトリには.rndがありましたが、それはrootによって所有されていたことです。それを削除してopensslコマンドを再発行することでこれが解決しました。

6
Zds

$ RANDFILE環境変数を設定するか、または$ HOME/.rndファイルを作成する必要があります。 ( OpenSSL FAQ )。 (もちろん、あなたはそのファイルに対する権利を持っているべきです。他の答えはここにあります。しかし最初にあなたはファイルとそれへの参照を持っているべきです。)

バージョン0.9.6までは、OpenSSLはシードファイルをカレントディレクトリの ".rnd"ファイルに書き込みました。バージョン0.9.6aでは、デフォルトのシードファイルはありません。 OpenSSL 0.9.6b以降は0.9.6aと同様に動作しますが、環境変数が設定されていない場合、Windowsシステム上のHOMEにはデフォルトの "C:\"が使用されます。

デフォルトのシードファイルが存在しないか、短すぎると、「PRNGがシードされていません」というエラーメッセージが表示されることがあります。

$ RANDFILE環境変数と$ HOME/.rndは、OpenSSLコマンドラインツールによってのみ使用されます。 OpenSSLライブラリを使用するアプリケーションは、エントロピーソースを指定するための独自の設定オプションを提供します。withアプリケーションに付属のドキュメントをチェックしてください。

2
Gangnus