Dalam praktiknya, alasan paling umum terjadinya hal ini adalah file .rnd di direktori home Anda dimiliki oleh root daripada akun Anda. Perbaikan cepat:
sudo rm ~/.rnd
Untuk informasi lebih lanjut, inilah entri dari FAQ OpenSSL :
Terkadang utilitas baris perintah openssl tidak dibatalkan dengan pesan kesalahan "PRNG tidak diunggulkan", tetapi mengeluh bahwa itu "tidak dapat menulis 'keadaan acak'". Pesan ini merujuk ke file seeding default (lihat jawaban sebelumnya). Alasan yang mungkin adalah tidak ada nama file default yang diketahui karena RANDFILE maupun HOME tidak diatur. (Versi hingga 0,9,6 menggunakan file ".rnd" dalam direktori saat ini dalam kasus ini, tetapi ini telah berubah dengan 0.9.6a.)
Jadi saya akan memeriksa RANDFILE, HOME, dan izin untuk menulis ke tempat-tempat di filesystem.
Jika semuanya tampak beres, Anda bisa mencoba berlari dengan strace dan melihat apa yang sebenarnya terjadi.
sudo chown user:user ~/.rnd
membuat semuanya berhasil.sudo
hal itu dan berhasil. Tetapi mengapa saya masih memiliki.rnd
direktori dengan root di $ HOME saya setelah saya membuat sertifikat yang ditandatangani sendiri?/var/www/.rnd
dan mengolahnyawww-data
. (Dengan asumsi itu/var/www
adalahwww-data
folder rumah, yang ada di sebagian besar sistem. Anda dapat memeriksawww-data
folder rumah dengancat /etc/passwd | grep www-data
)Saya tahu pertanyaan ini ada di Linux, tetapi di windows saya punya masalah yang sama. Ternyata Anda harus memulai command prompt dalam mode "Run As Administrator" agar bisa berfungsi. Kalau tidak, Anda mendapatkan hal yang sama: tidak dapat menulis kesalahan 'keadaan acak'.
sumber
set RANDFILE=.rnd
sebelum menjalankanopenssl
.$env:RANDFILE=".rnd"
bukanset RANDFILE=.rnd
.Satu masalah lain pada platform Windows, pastikan Anda menjalankan command prompt Anda sebagai Pengguna Administratif!
Saya tidak tahu berapa kali ini telah menggigit saya ...
sumber
Rupanya, saya perlu menjalankan OpenSSL sebagai root agar dapat memiliki izin ke file seeding.
sumber
Saya memiliki hal yang sama di server windows. Kemudian saya mencari tahu dengan mengubah
vars.bat
yang:kemudian ulangi dari awal dan semuanya harus baik-baik saja.
sumber
set HOME=.
Masalahnya bagi saya adalah saya memiliki .rnd di direktori home saya tetapi dimiliki oleh root. Menghapusnya dan menerbitkan kembali perintah openssl memperbaiki ini.
sumber
Anda harus mengatur variabel lingkungan $ RANDFILE dan / atau membuat file $ HOME / .rnd. ( FAQ OpenSSL ). (Tentu saja, Anda harus memiliki hak untuk file itu. Jawaban lain di sini adalah tentang itu. Tapi pertama-tama Anda harus memiliki file dan referensi untuk itu.)
Hingga versi 0.9.6 OpenSSL menulis file seeding di direktori saat ini di file ".rnd". Pada versi 0.9.6a Anda tidak memiliki file seeding default. OpenSSL 0.9.6b dan yang lebih baru akan berperilaku sama dengan 0.9.6a, tetapi akan menggunakan default "C: \" untuk HOME pada sistem Windows jika variabel lingkungan belum ditetapkan.
Jika file seeding default tidak ada atau terlalu pendek, pesan kesalahan "PRNG not seeded" dapat terjadi.
Variabel lingkungan $ RANDFILE dan $ HOME / .rnd hanya digunakan oleh alat baris perintah OpenSSL. Aplikasi yang menggunakan pustaka OpenSSL menyediakan opsi konfigurasi sendiri untuk menentukan sumber entropi, silakan lihat dokumentasi yang menyertai aplikasi tersebut.
sumber
Saya telah menemukan masalah ini hari ini di AWS Lambda. Saya membuat variabel lingkungan RANDFILE = /tmp/.random
Itu berhasil.
sumber