2009-10-29 15 views
10

विभिन्न कारणों से मैंने एक सरल HTTP सर्वर बनाया है, और OpenSSL के माध्यम से SSL समर्थन जोड़ा है। मैं स्वयं हस्ताक्षरित प्रमाणपत्र का उपयोग कर रहा हूं। आईई, फ़ायरफ़ॉक्स और क्रोम खुशी से सामग्री लोड करते हैं जब तक मैं विश्वसनीय रूट सीए में सीए जोड़ता हूं।wget, स्वयं हस्ताक्षरित certs और एक कस्टम HTTPS सर्वर

हालांकि, wget (तब भी जब --no-check-certificate ध्वज का उपयोग कर) की रिपोर्ट:

OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure 

अगर मैं का उपयोग कर अपने सर्वर के खिलाफ OpenSSL ग्राहक चलाएँ:

openssl s_client -connect dnvista:82 -debug 

मैं वापस पाने: त्रुटि सत्यापित करें: num = 19: सर्टिफिकेट चेन में स्वयं हस्ताक्षरित प्रमाणपत्र वापसी सत्यापित करें: 0 और फिर

5852:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:.\ssl\s3_pkt.c:1060:SSL alert number 40 
5852:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:.\ssl\s23_lib.c:188: 

क्या wget और ओपनएसएसएल क्लाइंट स्वयं हस्ताक्षरित प्रमाणपत्रों के साथ काम नहीं करता है?

अद्यतन:

किसी को भी है कि साथ बाद में आता है, इस कोड को OpenSSL ग्राहक और Firefox के साथ मदद जोड़ने के लिए:

EC_KEY *ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); 
SSL_CTX_set_tmp_ecdh(ctx, ecdh); 
EC_KEY_free(ecdh); 

उत्तर

11

मैं wget मैन ऑफ द पेज जाँच की, और --no-check-certificate केवल लगता है सर्वर प्रमाणपत्र को प्रभावित करें। आपको स्थानीय रूप से मान्य सीए प्रमाणपत्र के रूप में अपना स्वयं-हस्ताक्षरित प्रमाणपत्र निर्दिष्ट करना होगा।

ऐसा करने के लिए, s_client मामले में wget और -CAfile में --ca-certificate=... के रूप में प्रमाण पत्र निर्दिष्ट करें।

+5

हाय। मैंने इस तरह की कई टिप्पणियां देखी हैं, "कई शब्दों में चेक-ऑफ़ चालू करें"। यह ** ** वास्तव में _BAD_ विचार ** है। गीली सड़कों पर गंजे टायर के साथ सड़क रेसिंग की तरह थोड़ा सा। मुझे निराश है कि इस जवाब को 'टिक' चिह्न मिला। – will

+5

होगा: मैं सहमत हूं कि चेक चालू करना आम तौर पर एक बुरा विचार है। मेरा जवाब क्लाइंट को ज्ञात सीए प्रमाण पत्र बनाने का एक तरीका सुझाता है, ताकि चेक सही ढंग से किया जा सके। –

5

तुम भी तरीके का एक संख्या में से एक में OpenSSL में विश्वसनीय रूट CA प्रमाणपत्र स्थापित कर सकते हैं:

  • /etc/PKI/TLS/प्रमाणपत्र या समकक्ष निर्देशिका में अपने CA प्रमाणपत्र रखो, तो आधारित एक लिंक बनाने सर्टिफिकेट हैश पर। विवरण के लिए http://gagravarr.org/writing/openssl-certs/others.shtml#ca-openssl देखें।
  • अपने सीए प्रमाणपत्र को /etc/pki/tls/certs/ca-bundle.crt, /etc/pki/tls/cert.pem, या समकक्ष सीए बंडल में शामिल करें।
+0

मैंने एक प्रश्न पोस्ट किया: [रूबी ओपनएसएसएल सेट-अप या आपके आवेदन कोड के लिए कॉन्फ़िगरेशन] (http://stackoverflow.com/questions/5233169/ruby-openssl-set-up-or-configuration-for-your-plication- कोड), पूछने के लिए _HOW_ रूबी को होस्ट-सत्यापन करने के लिए पीईएम या सीआरटी संसाधन मिलते हैं। मैंने पूरी तरह से एक मॉड्यूल की तलाश की है जो रिकर्सिव ** grep ** स्कैन के साथ पर्यावरण या कॉन्फ़िगरेशन जानकारी लोड करता है - कोई किस्मत (परीक्षण और नमूने को छोड़कर)। – will

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