2010-11-28 14 views
71

पहला - अगर मैं पासफ्रेज नहीं देता तो क्या होता है? कुछ प्रकार के छद्म यादृच्छिक वाक्यांश का उपयोग किया जाता है? मैं सिर्फ बेकार हैकर्स को बे में रखने के लिए कुछ "अच्छा पर्याप्त" ढूंढ रहा हूं।कमांड लाइन से पासफ्रेज का उपयोग कर ओपनएसएसएल कुंजी कैसे उत्पन्न करें?

दूसरा - मैं कमांड लाइन पर पासफ्रेज़ की आपूर्ति करते हुए कमांड लाइन कैसे बना सकता हूं?


मैं अंत में यह इन आदेशों का उपयोग करते काम करना, कार्यकारी() जो यह आम तौर पर उपयोग करने के लिए सुरक्षित नहीं माना जाता है का उपयोग कर, एक फ़ाइल में पदबंध देने के लिए बेहतर होने मिला है। मैं इस जोखिम को स्वीकार कर सकता हूं क्योंकि मुझे यकीन है कि PHP को कभी भी मेरे पीसी पर निष्पादित किया जाएगा (जो विंडोज & चलाता है जिसमें पीएस कमांड नहीं है)।

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

@ कैफ के लिए बहुत से धन्यवाद, जिनके बिना यह संभव नहीं होता।

केवल एक अफसोस - कि, कोई कितना भी मैं गूगल, कोई भी विंडोज पर Xampp के साथ काम करते हैं

+1

क्यों 'openssl_pkey_new()' है ... " एक महत्वपूर्ण जोड़ी उत्पन्न करने के लिए उचित "तरीका? –

उत्तर

127

(जो उचित तरह से एक कुंजी युग्म उत्पन्न करने के लिए है) openssl_pkey_new() पाने के लिए लग सकता है आप डॉन पासफ्रेज़ का उपयोग न करें, फिर निजी कुंजी किसी भी सममित सिफर के साथ एन्क्रिप्ट नहीं की जाती है - यह आउटपुट पूरी तरह से असुरक्षित है।

आप एक कुंजी युग्म को उत्पन्न कर सकते हैं, कमांड लाइन की तरह एक मंगलाचरण के प्रयोग पर पासवर्ड की आपूर्ति (इस मामले में, पासवर्ड foobar है):

openssl genrsa -aes128 -passout pass:foobar 3072 
हालांकि

, ध्यान दें कि इस पदबंध द्वारा पकड़ा जा सकता है उस समय मशीन पर चल रही कोई अन्य प्रक्रिया, क्योंकि कमांड लाइन तर्क आमतौर पर सभी प्रक्रियाओं के लिए दृश्यमान होते हैं।

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

या मानक इनपुट पर पदबंध की आपूर्ति:

openssl genrsa -aes128 -passout stdin 3072 

आप

एक बेहतर विकल्प है कि फाइल अनुमति के साथ सुरक्षित है एक अस्थायी फ़ाइल में पदबंध लिखते हैं, और है कि निर्दिष्ट करने के लिए है file: विकल्प, या फ़ाइल डिस्क्रिप्टर के साथ नामित पाइप का भी उपयोग कर सकते हैं।


तो मिलान सार्वजनिक कुंजी प्राप्त करने के लिए, आप openssl rsa उपयोग करने के लिए, -passin पैरामीटर के साथ वही पासफ़्रेज़ की आपूर्ति के रूप में निजी कुंजी एन्क्रिप्ट करने के लिए इस्तेमाल किया गया था की जरूरत है:

openssl rsa -passin file:passphrase.txt -pubout 

(यह एन्क्रिप्टेड उम्मीद मानक इनपुट पर निजी कुंजी - आप इसे -in <file> का उपयोग कर फ़ाइल से पढ़ सकते हैं)। पासवर्ड foobar के साथ एन्क्रिप्टेड निजी कुंजी युग्म के साथ फाइलों में एक 3072-बिट निजी और सार्वजनिक कुंजी युग्म बनाने, के


उदाहरण:

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

+1 ग्रेट, यह काम करता है!धन्यवाद, अगर आप सिर्फ थोड़ी अधिक मदद कर सकते हैं तो आपको जवाब दिया जाएगा ... यह क्यों काम नहीं करेगा? openssl rsa -in privkey.pem -pubout -passout pass: foobar -out pubkey.pem – Mawg

+0

या इसे एक और तरीका रखने के लिए - अपने आदेश से सार्वजनिक कुंजी कैसे करें (जो मेरे से थोड़ा अलग है)। मुझे बस एक मिलान की जोड़ी चाहिए। यह केवल "बस पर्याप्त पर्याप्त" सुरक्षा है। – Mawg

+3

@Mawg: आपका 'openssl' कमांड आपूर्ति की गई निजी कुंजी से संबंधित सार्वजनिक कुंजी को आउटपुट कर रहा है - सार्वजनिक कुंजी एन्क्रिप्टेड नहीं हैं (वे गुप्त नहीं हैं), इसलिए' -पासआउट 'का उपयोग करने से कोई मतलब नहीं है। आप शायद पहले चरण में निजी कुंजी एन्क्रिप्ट करने के लिए उपयोग किए गए पासफ्रेज़ की आपूर्ति के लिए '-passin' का उपयोग करना चाहते हैं। मैंने जवाब में कुछ भी जोड़ा है। – caf

संबंधित मुद्दे