2014-10-08 6 views
7

शैल स्क्रिप्ट के अंदर मैं सार्वजनिक आरएसए फ़ाइल को सत्यापित करना चाहता हूं। मैं बस इतना करना चाहता हूं कि यह फ़ाइल जांचने का एक तरीका ढूंढें एक वास्तविक सार्वजनिक कुंजी फ़ाइल है, और कुछ नहीं।सार्वजनिक आरएसए कुंजी फ़ाइल की जांच कैसे करें

क्या मैं यहां विशेषज्ञों से पूछ सकता हूं कि मैं यह इनपुट फ़ाइल कैसे सत्यापित कर सकता हूं यह जांचने के लिए कि यह एक वास्तविक सार्वजनिक कुंजी फ़ाइल है, नियमित फाइल नहीं।

मैं आने वाली एन्क्रिप्ट gzip फ़ाइल को सत्यापित करने के लिए भविष्य में इस सार्वजनिक कुंजी फ़ाइल का उपयोग करूँगा लेकिन यह अब के दायरे से बाहर है।

मैं चाहता हूं कि मैं अपनी असली आरएसए सार्वजनिक कुंजी फ़ाइल को सामान्य फ़ाइल न जांचने के लिए इनपुट इनपुट फ़ाइल मान्य कर सकूं। कृपया ध्यान दें कि मेरे पास मेरे साथ कोई अन्य फाइल नहीं है (उदाहरण: निजी कुंजी)।

उदाहरण: यदि फ़ाइल ‘public.pem’ है तो मैं सिर्फ अंदर जांचना चाहता हूं कि यह वास्तविक आरएसए सार्वजनिक कुंजी फ़ाइल है न कि ग्रंथों या फ़ाइल के साथ सिर्फ एक फ़ाइल दूषित नहीं है। मैं पहले से ही जांच कर रहा हूं कि फ़ाइल शून्य आकार और एमडी 5 नहीं है।

अन्य संभावित चेकों मैंने पाया जांच फ़ाइल पाठ ‘BEGIN PUBLIC KEY’ और मिल गया ‘END PUBLIC KEY’ इसके अलावा गूगल में इस आदेश को पाया, इस openssl का उपयोग कर ऐसा करने के लिए

‘openssl rsa -noout -text -inform PEM -in pubkey.pem -pubin’ 

धन्यवाद एक बेहतर तरीका

+0

का उपयोग कर openssl शायद एक ही तरीका है आप क्या करना चाहते है इस। बस शुरुआत/अंत delimiters की जांच व्यर्थ है। मैं आपको 'BEGIN सार्वजनिक कुंजी हेहेहेथिसिसोटोटिडार्ड्स एंड पब्लिक कुंजी' के साथ एक फाइल भेज सकता हूं और आपका "सत्यापनकर्ता" इसे स्वीकार करेगा। –

+0

बिल्कुल यही कारण है कि मैं इस सार्वजनिक आरएसए फ़ाइल के वैध दिन के बारे में जानना क्यों चाहूंगा, कृपया ध्यान दें कि यह एक दूरस्थ सर्वर की सार्वजनिक आरएसए फ़ाइल है। – csf

+1

इसे डिबग करने के लिए https://8gwifi.org/certsverify.jsp – anish

उत्तर

15

यह संभव है है किसी भी सार्वजनिक कुंजी प्रारूप पार्सर का उपयोग करें, जिसमें openssl शामिल हैं या यहां तक ​​कि खुद को पार्स करें क्योंकि प्रारूप इतना कठिन नहीं है।

कमांड लाइन उपकरण एक गैर शून्य से बाहर निकलें कोड निर्धारित करते हैं, जब पार्स करने में विफल:

openssl rsa -inform PEM -pubin -in pubkey.pem -noout &> /dev/null 
if [ $? != 0 ] ; then 
    echo "this was definitely not a RSA public key in PEM format" 
    exit 1 
fi 

बस किसी भी सार्वजनिक कुंजी की जाँच करने के:

openssl pkey -inform PEM -pubin -in pubkey.pem -noout &> /dev/null 
if [ $? != 0 ] ; then 
    echo "this was definitely not a public key in PEM format" 
    exit 1 
fi 
+0

मान लें कि आपका मतलब जावा (जेआरई) कीटोल है, जो सार्वजनिक कुंजी नहीं पढ़ सकता है। एक प्रमाण पत्र हां, और एक ऐप तब से प्रमाणपत्र से '.getPublicKey()' कर सकता है, लेकिन सीधे प्रकाशन नहीं। ओटीओएच एक ऐप सीधे डीईआर में जेनेरिक (पीकेसीएस # 8) पबकी पढ़ सकता है, लेकिन बाउंसीकास्टल जैसे एडन के बिना बेस 64 आसानी से कम हो सकता है। एक तरफ, 'openssl' कमांडलाइन' -इनफॉर्म पीईएम 'पर डिफ़ॉल्ट है और छोड़ा जा सकता है, और आउटपुट विकल्प' -text -noout' छोड़ा जा सकता है जब आप आउटपुट को छोड़ रहे हों; या '-noout' के साथ और कोई अन्य आउटपुट विकल्प नहीं है जिसे आपको त्यागने की आवश्यकता नहीं है। –

+0

हां, ऐसा लगता है कि कीटोल ऐसा नहीं कर सकता है। बेस 64 को 'base64' उपयोगिता दोनों द्वारा समर्थित किया गया है, उदाहरण के लिए, और जावा में 'javax.xml.bind.DataTypeConverter' क्लास द्वारा। मैं प्रारूपों और अन्य चीजों के बारे में स्पष्ट होना पसंद करता हूं, न तो स्किपिंग प्रारूप में ज्यादा लाभ नहीं है। आप सही हैं कि '-noout' और' -text' एक साथ समझ में नहीं आता है, लेकिन आउटपुट को अभी भी त्यागना है, क्योंकि '-noout' विकल्प के साथ भी संभावित त्रुटि संदेश रिपोर्ट किए गए हैं। – divanov

+0

आप सही हैं मैं javax.xml के बारे में भूल गया, जो तब नहीं था जब मुझे पहली बार इस मुद्दे का सामना करना पड़ा। यद्यपि आपको वास्तव में बेस 64 और BEGIN/END हैंडलिंग दोनों की आवश्यकता है, जो कुछ पंक्तियां अधिक हैं। '-noout -text' समझ में आता है * एक साथ * (एन्कोडेड प्रमाण के बिना मानव-पठनीय डिस्प्ले आउटपुट करने के लिए) और इसी प्रकार समान संयोजन करें जैसे- -noout -subject -enddate'; जब स्टडआउट को त्याग दिया जाता है तो वे कोई फर्क नहीं पड़ता।आप त्रुटि संदेशों को हटाने के बारे में भी सही हैं; मैं उनके लिए इतना उपयोग करता हूं कि मैं शायद ही कभी ध्यान देता हूं, लेकिन अन्य लोग करेंगे। –

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