2010-11-28 24 views
71

İlk olarak bir parola vermezsem ne olur? Bir çeşit sahte rasgele ifade kullanılmış mı? Sadece sıradan bilgisayar korsanlarını uzak tutmak için "yeterince iyi" bir şey arıyorum.Komut satırından bir parola kullanarak bir openSSL anahtarı nasıl oluşturulur?

İkincisi - komut satırında parolayı temin ederek komut satırından nasıl bir anahtar çifti oluştururum?


Sonunda bir dosyada PassPhrase vermek daha iyi olma, genellikle kullanımı güvenli değildir Hesaba çekilen exec() kullanılarak, bu komutları kullanarak çalışma var. Bu riski kabul ettiğimden, PHP'nin sadece PC'mde çalıştırılacağından emin olduğumdan (ki bu pencerede & bir PS komutuna sahip değildir). Bu mümkün olmazdı onsuz @caf için

openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 2048 
openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub 

çok çok teşekkürler.

Tek pişman - olursa olsun, Google, kimse varsa

+1

neden 'openssl_pkey_new()' dır ... " bir anahtar çifti oluşturmak için uygun "yol" –

cevap

127

(bir anahtar çifti oluşturmak için uygun yolu olan) Windows üzerinde Xampp ile çalışan openssl_pkey_new() almak gibi ne kadar, bu don Bir parola kullanılmaz, daha sonra özel anahtar herhangi bir simetrik şifre ile şifrelenmez - tamamen korumasız olarak verilir.

Sen gibi bir çağırma kullanarak komut satırında parola besleyen bir keypair üretebilir (bu durumda, şifre foobar ise): Ancak

openssl genrsa -aes128 -passout pass:foobar 3072 

, bu parola ile yakaladı edilebildiğine dikkat Komut satırı argümanları genellikle tüm süreçler tarafından görülebildiği için, o anda makinede çalışan diğer tüm işlemler.

openssl genrsa -aes128 -passout file:passphrase.txt 3072 

Veya standart girişinde parolayı kaynağı:

openssl genrsa -aes128 -passout stdin 3072 

You

Daha iyi bir alternatif dosya izinleri ile korunan bir geçici dosyaya parola yazmak ve bu belirtmektir file: seçeneği ile adlandırılmış bir boru veya bir dosya tanıtıcısı da kullanılabilir.


sonra eşleşen kamu anahtarını elde etmek için, özel anahtarı şifrelemek için kullanılan olarak -passin parametresi ile aynı parolayı tedarik, openssl rsa kullanmak gerekir:

openssl rsa -passin file:passphrase.txt -pubout 

(Bu şifreli bekliyor Standart girişte özel anahtar - bunun yerine -in <file> kullanarak bir dosyadan okuyabilirsiniz). şifre foobar ile şifrelenmiş özel anahtar çifti ile, dosyalarda bir 3072-bit kamu ve özel anahtar çifti oluşturma


Örnek:

openssl genrsa -aes128 -passout pass:foobar -out privkey.pem 3072 
openssl rsa -in privkey.pem -passin pass:foobar -pubout -out privkey.pub 
+0

+1 Harika, işe yarıyor!Teşekkürler, eğer biraz daha telaşa yardımcı olabilirseniz, o zaman cevabı alırsınız ... neden bu işe yaramaz? openssl rsa -in privkey.pem -pubout -passout pass: foobar -out pubkey.pem – Mawg

+0

ya da başka bir yolla - komutunuzdaki ortak anahtarın nasıl (ki benimkinden biraz farklıydı). Eşleştirilmiş bir çifte ihtiyacım var. Bu sadece "yeterince iyi" güvenlik. – Mawg

+3

@Mawg: 'openssl' komutunuz, sağlanan özel anahtara karşılık gelen ortak anahtarın çıktısını alıyor - ortak anahtarlar şifrelenmiyor (gizli değiller), bu yüzden' -passout’u kullanmak hiç mantıklı değil. İlk adımda özel anahtarı şifrelemek için kullanılan parolayı sağlamak için muhtemelen oradaki -passin'i kullanmak istersiniz. Ayrıca cevaba bir şeyler ekledim. – caf

İlgili konular