4

自己署名証明書を作成し、Apache と node.js (ポート 3000) にインストールしました。ローカルホストの両方https://localhosthttps://localhost:3000うまく動作します。

そこで、GoDaddy 標準 SSL 証明書を購入し、サーバーにインストールしました( http://gatherify.com)。現在https://gatherify.comは正常に動作していますが、ノードの ssl が機能していません。アクセスするとhttps://gatherify.com:3000「接続が中断されました」と出ます。

私はcurlを実行しました:

root@host [~]# curl -v -s -k https://gatherify.com:3000
* About to connect() to gatherify.com port 3000 (#0)
*   Trying 108.160.156.123... connected
* Connected to gatherify.com (108.160.156.123) port 3000 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* warning: ignoring value of ssl.verifyhost
* NSS error -5938
* Closing connection #0
* SSL connect error

これを修正するための提案はありますか?

更新 *サーバー側: *

var io = require('socket.io'), 
    connect = require('connect'), 
    fs = require('fs'),

var privateKey = fs.readFileSync('cert/server.key').toString();
var certificate = fs.readFileSync('cert/server.crt').toString();

var options = { 
    key: privateKey,
    cert: certificate
};

var app = connect(options).use(connect.static('../htdocs/node/'));
app.listen(3000);
var server = io.listen(app);

server.sockets.on('connection', function(socket) { 
console.log("Connected");
});

クライアント側:

<html> <head>

<script type = "text/javascript" src = "https://gatherify.com:3000/socket.io/socket.io.js"></script>

<script type = "text/javascript">

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

</script>

</head><body></body></html>
4

2 に答える 2

2

証明書のインストール クライアント側 (Node.js 内)

自己割り当てまたは安価に購入した SSL 証明書を node.js クライアントが認識できるようにする必要がある場合は、 npmで入手できるssl-root-casを使用できます。

'use strict';

var https = require('https')
  , cas
  ;

// This will add the well-known CAs
// to `https.globalAgent.options.ca`
require('ssl-root-cas').inject();

cas = https.globalAgent.options.ca;

cas.push(fs.readFileSync(path.join(__dirname, 'ssl', '01-cheap-ssl-intermediary-a.pem')));
cas.push(fs.readFileSync(path.join(__dirname, 'ssl', '02-cheap-ssl-intermediary-b.pem')));
cas.push(fs.readFileSync(path.join(__dirname, 'ssl', '03-cheap-ssl-site.pem')));

これにより、通常の ssl 証明書を削除せずに、コア モジュールとコア モジュールに依存するモジュールで証明書を使用できるようになります (これは何らかの奇妙な理由によるデフォルトの動作です) httpsrequestsocket.io-client

于 2014-04-25T21:45:47.933 に答える