サーバーの管理セクションを保護するために自己署名SSL証明書を生成していますが、OpenSSLから次のメッセージが表示され続けます。
「ランダムな状態」を書き込めません
これは何を意味するのでしょうか?
これはUbuntuサーバー上にあります。最近のセキュリティの脆弱性を修正するために libsslをアップグレードしました。
サーバーの管理セクションを保護するために自己署名SSL証明書を生成していますが、OpenSSLから次のメッセージが表示され続けます。
「ランダムな状態」を書き込めません
これは何を意味するのでしょうか?
これはUbuntuサーバー上にあります。最近のセキュリティの脆弱性を修正するために libsslをアップグレードしました。
回答:
実際には、これが発生する最も一般的な理由は、ホームディレクトリの.rndファイルが、アカウントではなくルートによって所有されているためです。クイックフィックス:
sudo rm ~/.rnd
詳細については、OpenSSL FAQのエントリを次に示します。
opensslコマンドラインユーティリティが「PRNG not seeded」エラーメッセージで中止せずに、「「ランダムな状態」を書き込むことができない」というメッセージが表示される場合があります。このメッセージは、デフォルトのシードファイルを参照しています(前の回答を参照)。考えられる理由は、RANDFILEもHOMEも設定されていないため、デフォルトのファイル名が不明であることです。(この場合、バージョン0.9.6までは現在のディレクトリのファイル「.rnd」を使用していましたが、これは0.9.6aで変更されました。)
したがって、RANDFILE、HOME、およびファイルシステムのこれらの場所への書き込み権限を確認します。
すべてが正しいように見える場合は、straceを実行してみて、正確に何が起こっているかを確認できます。
sudo
ことを行い、それはうまくいきました。しかし、なぜ.rnd
自己署名証明書を作成した後も、$ HOMEにrootが作成したディレクトリがあるのですか?
/var/www/.rnd
それを作成してに変更することでこれを解決できますwww-data
。(それを仮定すると/var/www
あるwww-data
"それはほとんどのシステム上でのホームフォルダ、あなたがチェックすることができます。www-data
のホームフォルダ付きcat /etc/passwd | grep www-data
)
この質問はLinuxに関するものですが、Windowsでも同じ問題がありました。コマンドプロンプトを機能させるには、「管理者として実行」モードで起動する必要があることがわかりました。それ以外の場合は、同じ結果が得られます。「ランダムな状態」エラーを書き込むことができません。
set RANDFILE=.rnd
れる場合は、実行する前に別の解決策がありopenssl
ます。
$env:RANDFILE=".rnd"
では、これはではありませんset RANDFILE=.rnd
。
どうやら、OpenSSLにシードファイルへのアクセス許可を与えるには、ルートとしてOpenSSLを実行する必要があったようです。
Windowsサーバーでも同じことが起こりました。次に、vars.bat
どちらを変更するかを考えました:
set HOME=C:\Program Files (x86)\OpenVPN\easy-rsa
その後、最初からやり直します。すべて問題ありません。
set HOME=.
$ 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ライブラリを使用するアプリケーションは、エントロピーソースを指定するための独自の設定オプションを提供します。アプリケーションに付属のドキュメントを確認してください。
sudo chown user:user ~/.rnd
すべてがうまくいきました。