7

nodejs 版本:0.8.6
我使用 openssl 和以下命令创建了一个 ssl csr 文件: openssl req -nodes -newkey rsa:2048 -keyout myserver.key -out myserver.csr

  • csr 内容已发送到我的 SSL 提供商,证书已发回。

现在我想创建一个 SSL 安全服务器:

var fs = require("fs");
var https = require('https');
var credentials = {
            key: fs.readFileSync(options.base_project_folder + 'privatekey.pem'),
            cert: fs.readFileSync(options.base_project_folder + 'certificate.pem')
};
var server = https.createServer(credentials, app);
server.listen(port, address, function() {
    var addr = this.address();
    console.log('listening on %s:%d', addr.address, addr.port);
});

服务器正在运行,但我得到:“SSL 连接错误”

试图检查我所做的问题:openssl s_client -connect my_dns:443 // my_dns 指向我的 nodejs 服务器当然

结果:CONNECTED(00000003)139813382997664:错误:140790E5:SSL例程:SSL23_WRITE:ssl握手失败:s23_lib.c:177:
没有可用的对等证书
没有发送客户端证书CA名称
SSL握手已读取0字节并写入226字节
新,( NONE),密码为 (NONE)
不支持安全重新协商
压缩:NONE
扩展:NONE

谁能帮我 ?我在 SSL 的黑暗中迷路了 :(

4

3 回答 3

8

尝试像这样添加 CA:

var credentials = {
  key: fs.readFileSync(options.base_project_folder + 'privatekey.pem'),
  cert: fs.readFileSync(options.base_project_folder + 'certificate.pem'),
  ca: fs.readFileSync(/path/to/CA/cert)
};

文档说options 参数类似于tls.createServer

于 2013-04-07T17:54:26.697 回答
1

我相信您还需要为签名者指定 CA 证书。由于这不是自签名证书,因此您应该从获得证书的任何地方收到捆绑包。

一些应该有帮助的链接:http: //qugstart.com/blog/node-js/install-comodo-positivessl-certificate-with-node-js/ http://www.gettingcirrius.com/2012/06/securing -nodejs-and-express-with-ssl.html

于 2013-04-07T17:18:00.057 回答
0

如何通过 cloudflare 做到这一点?

使用明显的 ssl 凭据创建您的 websocket.js

var https = require('https');
var credentials = {
            key: fs.readFileSync('/location/to/privatekey.pem'),
            cert: fs.readFileSync(/location/to/certificate.pem')
};
var server = https.createServer(credentials, app);

1) 注册云耀斑

2) 将您的域 dns 服务器指向 cloudflare ns 服务器

3) 生成原始证书并将私钥和证书保存到您的服务器 privatekey.pem & certificate.pem

4) 确保您在 websocket 中使用 SSL 端口,并且您的路由器防火墙允许该端口。

于 2019-04-21T07:48:21.647 回答