OpenSSL kullanmak “'rastgele durum' yazılamıyor” ne demektir?


407

Sunucumun yönetici bölümünü korumak için kendinden imzalı bir SSL sertifikası oluşturuyorum ve bu iletiyi OpenSSL'den almaya devam ediyorum:

'rastgele durum' yazılamıyor

Ne anlama geliyor?

Bu bir Ubuntu sunucusunda. Son güvenlik açığını gidermek için libssl'yi yükselttim .

Yanıtlar:


555

Uygulamada, bu durumun en yaygın nedeni, ana dizininizdeki .rnd dosyasının hesabınızdan ziyade root'a ait olmasıdır. Hızlı düzeltme:

sudo rm ~/.rnd

Daha fazla bilgi için OpenSSL SSS bölümünden giriş :

Bazen openssl komut satırı yardımcı programı "PRNG ekilemedi" hata iletisiyle iptal olmaz, ancak "rasgele durum" yazamadığından şikayet eder. Bu mesaj varsayılan tohumlama dosyasına atıfta bulunur (önceki cevaba bakınız). Olası neden, varsayılan dosya adının bilinmemesidir çünkü RANDFILE veya HOME ayarlanmamıştır. (Bu durumda 0.9.6'ya kadar olan sürümler geçerli dizinde ".rnd" kullanılır, ancak bu 0.9.6a ile değişmiştir.)

Bu yüzden dosya sistemindeki yerlere yazmak için RANDFILE, HOME ve izinleri kontrol ediyorum.

Her şey yolunda görünüyorsa, strace ile koşmayı deneyebilir ve tam olarak neler olduğunu görebilirsiniz.


42
".Rnd" dosyası benim kullanıcı yerine kök tarafından sahip olduğu için sistemim bana bu sorunu veriyordu. Çabuk sudo chown user:user ~/.rndher şeyi halletti.
HalfBrian

1
OP ile aynı sorunu yaşadım. Ben yaptım sudove işe yaradı. Ancak .rnd, kendinden imzalı bir sertifika oluşturduktan sonra neden $ HOME'umda hala kök tarafından görüntülenen bir dizinim var ?
Luc M

3
Evet, php web sunucusundan çalıştırırsanız kullanıcı www-data'dır ve her açmadan önce "dışa aktarma" eklemeniz gerekir: shell_exec ('dışa aktar RANDFILE = ". Rnd"; openssl ecparam -genkey -name secp256k1'))
diyizm

2
/var/www/.rndOpenssl'yi www-data olarak çağırmak için PHP gibi bir komut dosyası dili kullanıyorsanız, bunu oluşturarak ve seçerek çözebilirsiniz www-data. (Varsayarsak /var/wwwolduğunu www-data'en sistemlerde olduğu lar giriş klasörü, kontrol edebilirsiniz. www-data' Nin giriş klasörü ile cat /etc/passwd | grep www-data)
Nick

1
Windows'u kullanıyordum - elbette, CMD istemini Yönetici olarak çalıştırmam gerekiyordu! Bunu yaparak bu sorunu çözdüm.
NickBeaugié

264

Bu sorunun Linux'ta olduğunu biliyorum, ama pencerelerde de aynı sorunu yaşadım. Çalışması için komut istemini "Yönetici Olarak Çalıştır" modunda başlatmanız gerektiği ortaya çıkıyor. Aksi takdirde aynı şeyi alırsınız: 'rastgele durum' hatası yazılamıyor.


13
Yönetici olarak pencerelerde çalışıyorum ama yine de hata alıyorum
Smalcat

6
Makinede yönetici olmak ve "Yönetici Olarak Çalıştır" ı kullanmak farklıdır. "Yönetici Olarak Çalıştır" programı Yönetici olarak çalışmaya zorlar, aksi halde yönetici olsanız bile istem yönetici olmayan bir güvenlik izni ile çalışır.
Beachhouse

67
Yönetici modunda çalışıyorsanız ve hala "'Rasgele durum' yazılamıyor" mesajını alıyorsanız, set RANDFILE=.rndçalıştırmadan önce başka bir çözüm bulmaktır openssl.
jevon

3
Powershell'de bu daha $env:RANDFILE=".rnd"ziyade set RANDFILE=.rnd.
x5657

Bunu yapmamanın dezavantajı nedir?
StanTastic

41

Windows platformundaki bir diğer sorun da, komut isteminizi Yönetici Kullanıcı olarak çalıştırdığınızdan emin olun!

Bunun beni kaç kez ısırdığını bilmiyorum ...


1
Diğerleri bu setin ayarlanmasını önerdi RANDFILE = .rnd Yönetici
Svetoslav Marinov

16

Görünüşe göre, tohumlama dosyasına izin verebilmek için OpenSSL'yi root olarak çalıştırmam gerekiyordu.


16
Bir kez kök olarak çalıştırmanız daha olasıdır, bunun üzerine ana dizininizdeki .rnd dosyası sadece kök için ayarlanmış izinlerle oluşturulmuştur. Bu bir süre önce başıma geldi. .Rnd dosyasının silinmesi sorunu çözdü.
fotNelton

13

Windows sunucusunda da aynı şey vardı. Sonra vars.bathangisini değiştirerek anladım :

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

sonra baştan yeniden yap ve her şey yolunda olmalı.


bu kadar! Teşekkürler. Ben bu değişikliği doğru talimatları (burada: openvpn.net/index.php/open-source/documentation/howto.html#pki ) , "init-config" ve "vars" komutları arasında yaptı . çünkü ben 32-bit sürümünü (ki ben tercih) yüklü olmalıdır.
symbiont

4
Bu hile yaptı ve yönetici olarak çalıştırmak zorunda kalmadım. Teşekkürler! Aslında, sadece kullandımset HOME=.
Synetech

6

Benim için sorun benim ana dizinde .rnd vardı ama kök sahip oldu. Silme ve openssl komutunun yeniden gönderilmesi sorunu çözdü.


6

$ RANDFILE ortam değişkenini ayarlamalı ve / veya $ HOME / .rnd dosyası oluşturmalısınız. ( OpenSSL SSS ). (Tabii ki, bu dosya için haklara sahip olmalısınız. Burada diğer yanıtlar bununla ilgili. Ama önce dosyaya ve ona bir referansa sahip olmalısınız.)

0.9.6 sürümüne kadar OpenSSL tohumlama dosyasını ".rnd" dosyasındaki geçerli dizine yazdı. 0.9.6a sürümünde varsayılan tohumlama dosyanız yoktur. OpenSSL 0.9.6b ve üstü, 0.9.6a'ya benzer şekilde davranacaktır, ancak ortam değişkeni ayarlanmamışsa Windows sistemlerinde HOME için varsayılan "C: \" kullanır.

Varsayılan tohumlama dosyası yoksa veya çok kısaysa, "PRNG tohumlanmadı" hata iletisi oluşabilir.

$ RANDFILE ortam değişkeni ve $ HOME / .rnd yalnızca OpenSSL komut satırı araçları tarafından kullanılır. OpenSSL kitaplığını kullanan uygulamalar, entropi kaynağını belirtmek için kendi yapılandırma seçeneklerini sunar, lütfen uygulama ile birlikte gelen belgelere bakın.


2

Bu sorunu bugün AWS Lambda'da karşılıyorum. RANDFILE = /tmp/.random ortam değişkenini oluşturdum

Hile yaptı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.