4

独自のLivechatを作成しましたが、正常に機能しますが、SSL証明書を追加しようとすると、正しく機能しなくなります。

別のコードを試しました。

var fs = require('fs');
var express = require("express");

var options = { 
    key:  fs.readFileSync('ca.key'), 
    cert: fs.readFileSync('ca.crt')
}; 

var expres = express()
  , app = require('https').createServer(options, expres)
  , io = require('socket.io').listen(app, { });

app.listen(8080);

var fs = require('fs');
var express = require("express");

var options = {
    key:    fs.readFileSync('ca.key'),
    cert:   fs.readFileSync('ca.csr'),
    ca:     fs.readFileSync('ca.crt'),
    requestCert:        true,
    rejectUnauthorized: false
};

var expres = express()
  , app = require('https').createServer(options, expres)
  , io = require('socket.io').listen(app, { });

 app.listen(8080);

3つのファイルがコンテンツとともに存在します。(ca.key、c​​a.csr、ca.crt)

107(ERR_SSL_PROTOCOL_ERROR)が発生することもあれば、サーバーが起動しないこともあります。

ありがとう、

4

1 に答える 1

4

httpsサーバーAPIhttp://nodejs.org/api/https.html#https_class_https_serverを確認する場合。tls.Serverのサブクラスであることがわかります

Class: https.Server
This class is a subclass of tls.Server and emits events same as http.Server.

tls.server API http://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistenerを確認すると、tlsまたはhttpsサーバーに必要なものがすべて表示されます。

key: A string or Buffer containing the private key of the server in PEM format. (Required)
cert: A string or Buffer containing the certificate key of the server in PEM format. (Required)

1つの例として上記の2つのみを使用しているためです。必要なPEM形式で検証/テストする必要があります。ここに記載されている手順を使用して作成できますhttp://nodejs.org/api/tls.html#tls_tls_ssl

openssl genrsa -out ryans-key.pem 1024
openssl req -new -key ryans-key.pem -out ryans-csr.pem
openssl x509 -req -in ryans-csr.pem -signkey ryans-key.pem -out ryans-cert.pem

この後、他のオプションが原因であるかどうかを確認できます。上記の証明書でテストする場合は、それを削除してください。

//requestCert:        true,  
//rejectUnauthorized: false
于 2013-02-20T18:33:17.320 に答える