[ssl] एसएसएल के साथ node.js, socket.io


Answers

उसी नोट पर, यदि आपका सर्वर http और https दोनों का समर्थन करता है तो आप इसका उपयोग कर कनेक्ट कर सकते हैं:

var socket = io.connect('//localhost');

ब्राउज़र योजना का पता लगाने और उसके अनुसार http / https का उपयोग करके कनेक्ट करने के लिए। जब https में, परिवहन को डिफ़ॉल्ट रूप से सुरक्षित किया जाएगा, जैसा कि उपयोग कर कनेक्ट किया जा रहा है

var socket = io.connect('https://localhost');

सुरक्षित वेब सॉकेट का उपयोग करेंगे - wss:// ( {secure: true} wss:// {secure: true} अनावश्यक है)।

एक ही नोड सर्वर का उपयोग करके आसानी से http और https दोनों की सेवा करने के तरीके के बारे में अधिक जानकारी के लिए इस उत्तर को देखें

Question

मैं अपने एसएसएल प्रमाणपत्र के साथ socket.io चल रहा है, हालांकि, यह कनेक्ट नहीं होगा।

मैंने चैट कोड से अपना कोड आधारित किया:

var https = require('https');
var fs = require('fs');
/**
 * Bootstrap app.
 */
var sys = require('sys')
require.paths.unshift(__dirname + '/../../lib/');

/**
* Module dependencies.
*/

var express = require('express')
  , stylus = require('stylus')
  , nib = require('nib')
  , sio = require('socket.io');

/**
 * App.
 */
var privateKey = fs.readFileSync('../key').toString();
var certificate = fs.readFileSync('../crt').toString();
var ca = fs.readFileSync('../intermediate.crt').toString();

var app = express.createServer({key:privateKey,cert:certificate,ca:ca });


/**
 * App configuration.
 */

...

/**
 * App routes.
 */

app.get('/', function (req, res) {
  res.render('index', { layout: false });
});

/**
 * App listen.
 */

app.listen(443, function () {
  var addr = app.address();
  console.log('   app listening on http://' + addr.address + ':' + addr.port);
});

/**
 * Socket.IO server (single process only)
 */

var io = sio.listen(app,{key:privateKey,cert:certificate,ca:ca});
...

अगर मैं एसएसएल कोड हटा देता हूं तो यह ठीक चलता है, हालांकि इसके साथ मुझे http://domain.com/socket.io/1/?t=1309967919512 अनुरोध मिलता है

ध्यान दें कि यह https की कोशिश नहीं कर रहा है, जो इसे विफल कर देता है।

मैं क्रोम पर परीक्षण कर रहा हूं, क्योंकि यह इस एप्लिकेशन के लिए लक्षित ब्राउज़र है।

मैं क्षमा चाहता हूं अगर यह एक साधारण सवाल है, तो मैं नोड / सॉकेट हूं। नया नौसिखिया।

धन्यवाद!




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

var socket = io.connect('https://localhost', {rejectUnauthorized: false});





Links