2013-03-09 88 views
0

我購買了GoDaddy Standard SSL證書並將其安裝在http://mysite.com上。現在https://mysite.com效果很好。在Socket.IO Node.js上安裝SSL

現在,我要安裝的是運行socket.io證書在http://mysite.com:3000

我試圖做與SSL連接:

var socket = io.connect('https://www.mysite.com:3000', {secure:true}); 

,但它不工作。這裏是server.js

var io = require('socket.io'), 
    connect = require('connect'), 
    mysql = require('mysql'); 

var app = connect().use(connect.static('../public_html/node/')); 
app.listen(3000); 
var server = io.listen(app); 
server.sockets.on('connection', function(socket) { 
    socket.emit('getid', {message: "A New user is online"}); 
} 

和客戶端的index.html

<script type = "text/javascript" src = "http://www.mysite.com:3000/socket.io/socket.io.js"></script> 

<script type = "text/javascript"> 
var socket = io.connect('http://www.mysite.com:3000'); 
</script> 

有什麼建議?

回答

3

您的客戶連接到http,請嘗試讓您的客戶端index.html連接到https

此外,您需要加載證書。

const crypto = require('crypto'), 
    fs = require("fs"), 
    http = require("http"); 

var privateKey = fs.readFileSync('privatekey.pem').toString(); 
var certificate = fs.readFileSync('certificate.pem').toString(); 

var credentials = crypto.createCredentials({key: privateKey, cert: certificate}); 

var handler = function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}; 

var server = http.createServer(); 
server.setSecure(credentials); 
server.addListener("request", handler); 
server.listen(8000); 

創建您的自簽名.pem文件。 (對於獎勵積分,請獲得.csr由知名公司簽名。)

openssl genrsa -out privatekey.pem 2048 
openssl req -new -key privatekey.pem -out certrequest.csr 
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem