मैं कमांड लाइन पर एसएसएल प्रमाणपत्र कैसे सत्यापित कर सकता हूं?


52

मैं यह सत्यापित करने / सत्यापित करने की कोशिश कर रहा हूं कि यहाँ संग्रहीत rsa कुंजी, ca-बंडल और प्रमाणपत्र ठीक हैं। उन्हें एक वेबसर्वर द्वारा सेवा नहीं दी जा रही है। मैं उन्हें कैसे सत्यापित कर सकता हूं?


को देखो openssl x509पुस्तिका अनुभाग।
एलेक्स

ओपनएसएसएल सत्यापित मैनुअल आपको यहां मदद कर सकता है। इसके अलावा, देखें कि इस पृष्ठ के कुछ उत्कृष्ट उदाहरण हैं।
स्टीफन लासिवस्की

जवाबों:


61

मान लें कि आपके प्रमाणपत्र PEM प्रारूप में हैं, तो आप यह कर सकते हैं:

openssl verify cert.pem

यदि आपका "सीए-बंडल" एक फ़ाइल है जिसमें PEM प्रारूप में अतिरिक्त मध्यवर्ती प्रमाणपत्र हैं:

openssl verify -untrusted ca-bundle cert.pem

यदि आपका ओप्सल स्वचालित रूप से रूट प्रमाणपत्र (जैसे /etc/ssl/certs) के स्थापित सेट का उपयोग करने के लिए सेट नहीं किया गया है , तो आप सीए का उपयोग -CApathया -CAfileनिर्दिष्ट कर सकते हैं ।


9
चेतावनी, Opensl सत्यापित कमांड आपकी अपेक्षा से अधिक अनुमेय है! डिफ़ॉल्ट रूप से, दिए गए CAfile की जाँच करने के अलावा, यह सिस्टम के सेरेट्स डायरेक्टरी जैसे / etc / ssl / certs में किसी भी मिलान वाले CA के लिए भी जाँच करता है। इस व्यवहार को रोकने के लिए और सुनिश्चित करें कि आप CAFile द्वारा दिए गए अपने विशेष CA प्रमाणपत्र के खिलाफ जाँच कर रहे हैं, आपको एक गैर-मौजूद निर्देशिका के साथ -CApath विकल्प भी पास करना होगा, जैसे: Opensl सत्यापन -verbose -CApath nosuchdir -CAfile cacert.pem सर्वर .crt
DSimon

2
एक और चेतावनी: यदि आप उपयोग करते हैं -CApath nosuchdirतो server.crt और cacert.pem के संयोजन में रूट CA शामिल होना चाहिए; अगर Opensl केवल उन फाइलों के साथ एक मध्यवर्ती CA तक काम कर सकता है तो यह शिकायत करेगा।
DSimon

यह कहता है कि ऐसी कोई फ़ाइल नहीं है /certs/। क्या इससे समस्या होगी? क्योंकि im एक स्थिति में है जहाँ मेरा सर्वर काम करता है, http कर्ल काम करता है, लेकिन https .. कर्ल त्रुटि हो जाती है। जहां वेबसाइट ने काम करना बंद कर दिया था।
गियोर्गी ग्वीम्रदेज़

18

प्रमाणपत्र श्रृंखला को सत्यापित करने के लिए यहां एक-लाइनर है:

openssl verify -verbose -x509_strict -CAfile ca.pem -CApath nosuchdir cert_chain.pem

इसके लिए CA को कहीं भी स्थापित करने की आवश्यकता नहीं है।

देखें https://stackoverflow.com/questions/20409534/how-does-an-ssl-certificate-chain-bundle-work जानकारी के लिए।


1
चेतावनी, -CAfile का विकल्प आपकी अपेक्षा से कहीं अधिक अनुमेय है। विवरण के लिए स्वीकृत उत्तर पर मेरी टिप्पणी देखें।

1
@DSimon, मैंने -CApath nosuchdirजवाब देने के लिए इसे जोड़ा । धन्यवाद।
वडज़िम २१'१६ को

कोई समस्या नहीं, मुझे सहायता करके प्रसन्नता होगी। :-) एक चेतावनी जिसे मैंने अपनी पूर्व टिप्पणी पोस्ट करने के बाद समझी थी: यदि निर्दिष्ट फ़ाइल -CAfileअपने आप में सिर्फ एक मध्यवर्ती प्रमाणपत्र है, तो Opensl शिकायत करेगी। यह सही व्यवहार है, क्योंकि verifyरूट सीए तक सभी तरह की एक पूरी श्रृंखला की आवश्यकता होती है, लेकिन यह भ्रामक हो सकता है।
DSimon

2
मेरे संस्करण ( OpenSSL 1.1.1 11 Sep 2018) को -CApathमौजूदा निर्देशिका होने के लिए तर्क की आवश्यकता है ।
जेक कोब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.