2015-10-25 4 views
6

मैं एसएसएल के माध्यम से socket.io के साथ सॉकेट करना चाहता हूं। यहाँएक्सप्रेस के साथ socket.io में एसएसएल: गुम पीएफएक्स या प्रमाणपत्र + निजी कुंजी।

var ssl_options = { 
    key : fs.readFileSync(my_key_path), 
    cert : fs.readFileSync(my_cert_path) 
}; 

var protocol = "https"; 

preparedApp = require(protocol).createServer(ssl_options,app); 

var io = require('socket.io')(preparedApp); 

preparedApp.listen(8080, function(){}); 
io.on('connection', function(socket){}); 

और मेरे ssl_options का लॉग है ...

{ key: <Buffer 41 ...>, 
cert: <Buffer 4a ...> } 

त्रुटि के साथ यह त्रुटियों: मैं अन्य उत्तर पढ़ा है लेकिन कुछ भी

यहाँ काम किया मेरी कोड है शीर्षक throw new Error('Missing PFX or certificate + private key.'); में। क्या किसी को पता है कि क्या हो रहा है? इस जवाब के अन्य समाधानों में से कोई भी मेरे मामले को हल नहीं किया।

उत्तर

2

अपनी निजी कुंजी के लिए पीईएम (आरएसए) प्रारूप का उपयोग करें। जांचें कि क्या निजी कुंजी बेस 64 एन्कोडेड है, "----- BEGIN आरएसए निजी कुंजी -----" और "----- अंत आरएसए निजी कुंजी -----"

से डॉक्स:

  • कुंजी: एक स्ट्रिंग या बफर PEM प्रारूप में सर्वर की निजी कुंजी युक्त
  • प्रमाणपत्र: निजी कुंजी के लिए पदबंध की एक स्ट्रिंग: एक स्ट्रिंग PEM एन्कोड प्रमाण पत्र
  • पदबंध पकड़े या पीएफएक्स [वैकल्पिक डिफ़ॉल्ट: शून्य]

या

  • pfx: openssl rsa -in <PATH TO KEY> -out key.pem -outform PEM

    एक बनाने के लिए: एक स्ट्रिंग या PFX या PKCS12 इनकोडिंग निजी कुंजी, प्रमाण पत्र और CA प्रमाणपत्रों

पकड़े आरएसए पीईएम के लिए एक निजी कुंजी परिवर्तित करने के लिए बफ़र PKCS # 12 बंडल उपयोग openssl pkcs12 -export -in cert.pem -inkey key.pem -certfile ca.pem -out host.pfx

- अलावा -

ensu के लिए पुनः प्रमाण पीईएम एन्कोडेड रन openssl x509 -in <PATH TO CERT> -out cert.pem -outform PEM

+0

असल में मैंने अपनी .key को एक आदेश में बदल दिया है जिसका उपयोग आपने मुझे बताया था। बाद में मैं 'वर ssl_options करने के लिए अपने कोड बदल = { कुंजी: fs.readFileSync (my_pem_path), प्रमाणपत्र (.pem में है): fs.readFileSync (my_cert_path) (.crt में है) };' लेकिन यह अभी भी एक ही त्रुटियों के साथ विफल रहा है। कोई उपाय? – Fane

+0

क्रेट को पेम के रूप में एन्कोड करने का प्रयास करें। मेरे उत्तर के अतिरिक्त देखें। – windm

+0

नहीं ... सटीक वही बात :( – Fane

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