W praktyce najczęstszą przyczyną tego zjawiska jest to, że plik .rnd w twoim katalogu domowym jest własnością root, a nie konta. Szybka poprawka:
sudo rm ~/.rnd
Aby uzyskać więcej informacji, oto wpis z OpenSSL FAQ :
Czasami narzędzie wiersza polecenia openssl nie przerywa działania z komunikatem o błędzie „PRNG nie został zaszczepiony”, ale skarży się, że „nie jest w stanie zapisać„ stanu losowego ”. Ten komunikat odnosi się do domyślnego pliku inicjującego (patrz poprzednia odpowiedź). Możliwym powodem jest brak domyślnej nazwy pliku, ponieważ nie jest ustawiony ani RANDFILE, ani HOME. (W tym przypadku wersje do 0.9.6 używały pliku „.rnd” w bieżącym katalogu, ale zmieniło się to w wersji 0.9.6a.)
Więc sprawdziłbym RANDFILE, HOME i uprawnienia do zapisu w tych miejscach w systemie plików.
Jeśli wszystko wydaje się być w porządku, możesz spróbować biegać strace i zobaczyć, co się właściwie dzieje.
sudo chown user:user ~/.rnd
sprawiło, że wszystko się udało.sudo
i zadziałało. Ale dlaczego nadal mam.rnd
katalog w katalogu $ HOME po utworzeniu samopodpisanego certyfikatu?/var/www/.rnd
i zmieniającwww-data
. (Zakładając, że/var/www
jestwww-data
to folder domowy, który znajduje się w większości systemów. Możesz sprawdzićwww-data
folder domowy za pomocącat /etc/passwd | grep www-data
)Wiem, że to pytanie dotyczy systemu Linux, ale w systemie Windows miałem ten sam problem. Okazuje się, że musisz uruchomić wiersz polecenia w trybie „Uruchom jako administrator”, aby działał. W przeciwnym razie otrzymasz to samo: nie można zapisać błędu „stan losowy”.
źródło
set RANDFILE=.rnd
wykonanie goopenssl
.$env:RANDFILE=".rnd"
raczej niżset RANDFILE=.rnd
.Jeszcze jeden problem na platformie Windows, upewnij się, że uruchamiasz wiersz polecenia jako użytkownik administracyjny!
Nie wiem ile razy mnie to ugryzło ...
źródło
Najwyraźniej musiałem uruchomić OpenSSL jako root, aby mieć uprawnienia do pliku inicjującego.
źródło
Miałem to samo na serwerze Windows. Potem wymyśliłem, zmieniając to,
vars.bat
co:następnie powtórz od początku i wszystko powinno być w porządku.
źródło
set HOME=.
Problemem było to, że miałem .rnd w moim katalogu domowym, ale był własnością root. Usunięcie go i ponowne uruchomienie polecenia openssl naprawiło to.
źródło
Powinieneś ustawić zmienną środowiskową $ RANDFILE i / lub utworzyć plik $ HOME / .rnd. ( OpenSSL FAQ ). (Oczywiście powinieneś mieć prawa do tego pliku. Inne odpowiedzi tutaj są na ten temat. Ale najpierw powinieneś mieć plik i odniesienie do niego.)
Do wersji 0.9.6 OpenSSL zapisał plik inicjujący w bieżącym katalogu w pliku „.rnd”. W wersji 0.9.6a nie ma domyślnego pliku inicjującego. OpenSSL 0.9.6b i nowsze będą zachowywać się podobnie jak 0.9.6a, ale użyją domyślnej wartości „C: \” dla HOME w systemach Windows, jeśli zmienna środowiskowa nie została ustawiona.
Jeśli domyślny plik inicjujący nie istnieje lub jest za krótki, może pojawić się komunikat o błędzie „PRNG nie został zaszczepiony”.
Zmienna środowiskowa $ RANDFILE i $ HOME / .rnd są używane tylko przez narzędzia wiersza poleceń OpenSSL. Aplikacje korzystające z biblioteki OpenSSL mają własne opcje konfiguracji do określania źródła entropii, sprawdź dokumentację dołączoną do aplikacji.
źródło
Natknąłem się dziś na ten problem na AWS Lambda. Utworzyłem zmienną środowiskową RANDFILE = /tmp/.random
To załatwiło sprawę.
źródło