相关疑难解决方法(0)

在express.js上启用HTTPS

我正在尝试让HTTPS在express.js上运行节点,我无法弄明白.

这是我的app.js代码.

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

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

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


var app = express.createServer(credentials);

app.get('/', function(req,res) {
    res.send('hello');
});

app.listen(8000);
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它似乎只响应HTTP请求.

我写了简单的node.js基于香草的HTTPS应用程序:

var   fs = require("fs"),
      http = require("https");

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

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

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

server.listen(8000);
Run Code Online (Sandbox Code Playgroud)

当我运行这个应用程序时,它响应HTTPS请求.请注意,我不认为fs上的toString()结果很重要,因为我已经使用了两者的组合而仍然没有es …

https node.js express

359
推荐指数
7
解决办法
32万
查看次数

Node.js HTTPS安全错误

我正在尝试创建一个安全的node.js服务器,以便与使用ssl(https)的网站一起使用.

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

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

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

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(8084);
Run Code Online (Sandbox Code Playgroud)

但是,当我启动我的服务器时,我收到以下错误:

node.js:116
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
TypeError: Object #<Server> has no method 'setSecure'
    at Object.<anonymous> (/home/meshdev/public_html/js/node/server/test.js:16:8)
    at Module._compile (module.js:380:26)
    at Object..js (module.js:386:10)
    at Module.load (module.js:312:31) …
Run Code Online (Sandbox Code Playgroud)

https node.js socket.io

15
推荐指数
1
解决办法
2万
查看次数

node.js https示例,错误,与localhost连接的未知SSL协议错误

我使用这些链接中的简单示例:

链接 [如何在Node.js中创建HTTPS服务器?]

一个链接 [如何创建一个https服务器?docs.nodejitsu.com]

但我得到的错误就像

curl:(35)与localhost连接时出现未知的SSL协议错误:-9838

为什么?

https node.js

13
推荐指数
1
解决办法
8777
查看次数

node.js https服务器未加载响应

我正在尝试启动https node.js服务器.

我首先按照本指南创建证书和密钥:

http://gaboesquivel.com/blog/2014/nodejs-https-and-ssl-certificate-for-development/

我把它们放在我的/app_name/security/keys目录中.

要启动我的https服务器,我有以下内容:

const https         = require('https'),
      fs            = require('fs');

if(app.get('env') === 'development') {

    console.log('dev env!!'); //prints correctly
    console.log('port: ' + port); //prints correctly
    const options = {
        key: fs.readFileSync('./security/keys/key.pem'),
        cert: fs.readFileSync('./security/keys/cert.pem')
    };   

    https.createServer(options, (req, res) => {

        console.log('https good to go'); //this does not print out anything

    }).listen(port);

}
Run Code Online (Sandbox Code Playgroud)

当我去https://localhost:3000,页面抛出一​​个错误

This site can’t be reached

localhost unexpectedly closed the connection.
ERR_CONNECTION_CLOSED
Run Code Online (Sandbox Code Playgroud)

但是服务器端控制台上没有错误.此外,如果我去常规localhost:3000,我得到:

The localhost page isn’t working

localhost didn’t send …
Run Code Online (Sandbox Code Playgroud)

https node.js

11
推荐指数
1
解决办法
4934
查看次数

Node.js和Socket.io:安全websocket连接的自签名证书

我一直在互联网上寻找直接的答案,但大多数解决方案都涉及使用Express并提供HTTP内容以实现安全连接.我对Node.js和socket.io 的安全Web套接字连接(wss)更感兴趣

我没有将Node.js用于HTTP请求.我使用与Node.js一起使用的socket.io模块将消息实时传递给我的应用程序.我只使用节点进行Web套接字连接.

我会简单解释一下我的设置是什么.我使用Django作为我的HTTP后端.用户向Django发出请求,Django将该请求的内容转发给Redis,Node.js在Redis的一个频道上侦听,它处理内容并将消息发送给适当的收件人.

非常简单直接.一切正常.但我担心与Node.js的websocket连接是不安全的.当Node.js向收件人发送消息时,我不希望任何人在其间窥探并拦截该消息.我想确保我的用户感到安全并相信我为他们建立的服务.

我查看了CA的自签名证书和证书.两者都提供相同级别的安全性.由于我只使用Node.js作为socket.io并且不提供HTTP内容,因此自签名证书可以正常工作(我构建的服务是针对移动设备的,而不是针对浏览器的!)

下面是我对socket.io的实现:

var io = require('socket.io').listen(8000);
var redis = require('socket.io/node_modules/redis')
var redisChannelConnection = redis.createClient(6000, "12.345.678.9");
var redisServer = redis.createClient(6000, "23.456.789.1");

// Subscribe to Redis Channel
redisChannelConnection.subscribe('messages');

io.sockets.on('connection', function (socket) {
     socket.emit('message', 'Hello World');
     }
Run Code Online (Sandbox Code Playgroud)

到目前为止,我刚刚编写了一个简单的连接函数.它可以作为普通的websocket连接.但我想使它成为一个安全的websocket连接.我有多少这样做?

谢谢您的帮助.

javascript sockets security node.js socket.io

7
推荐指数
1
解决办法
3930
查看次数

节点 v7.9.0 https 的 ERR_SSL_VERSION_OR_CIPHER_MISMATCH

此代码在node v7.9.0(Electron当前使用的版本)中创建一个https服务器,并监听端口8000:

require('https').createServer(
  {},
  (req, res) => {
    res.writeHead(200);
    res.end('hello world/n');
  }
).listen(8000);
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我在服务器运行的情况下在 Chrome 中访问https://localhost:8000时,我收到 ERR_SSL_VERSION_OR_CIPHER_MISMATCH。我该如何克服这个错误?如何查明服务器正在提供哪些密码以及它正在使用哪种协议(希望是最新版本的 TLS)?

编辑此错误也发生在节点 v8.5.0 上,这是撰写本文时最新的 Node 稳定版本

javascript ssl https node.js

5
推荐指数
1
解决办法
2674
查看次数

Node.js 对 HTTPS 返回空响应

我有以下非常基本的 Node.js 服务器:

"use strict";

const http = require("http");
const https = require("https");
const fs = require("fs");

http.createServer((req, res) => {
        console.log("regular works");
        res.end("Regular response");
}).listen(3000);

https.createServer({
        key: fs.readFileSync("/etc/letsencrypt/live/domain.com/privkey.pem"),
        cert: fs.readFileSync("/etc/letsencrypt/live/domain.com/cert.pem")
}, (req, res) => {
        console.log("secure works");
        res.end("Secure response");
}).listen(3001);
Run Code Online (Sandbox Code Playgroud)

我将其运行为sudo node filename.js,只是因为其中的文件/etc/letsencrypt/live仅限根目录。我稍后会正确执行此操作,这仅用于测试。

运行时,我可以很好地访问端口 3000。服务器控制台打印regular works,浏览器显示Regular response。但是,端口 3001 返回空响应,并且没有消息打印到服务器。

LetsEncrypt 文件是用它生成的./letsencrypt-auto certonly --standalone -d domain.com --email email@gmail.com --agree-tos并且看起来有效。

为了达到预期的结果,我缺少什么?

node.js

3
推荐指数
1
解决办法
5926
查看次数

节点js中的ERR_SSL_VERSION_OR_CIPHER_MISMATCH

我最近从 Positive ssl 购买了个人 ssl 证书。在我通过激活和验证解决了所有问题后,我终于能够下载证书文件了。

我得到的文件是:

www.niknet.ddns.net.ca-bundle
www.niknet.ddns.net.crt
www.niknet.ddns.net.p7b
Run Code Online (Sandbox Code Playgroud)

在我只使用.keyand之前.crt ,它工作得很好,但现在我正在使用.ca-bundleand 该.crt文件,这是我用来将这些文件包含到 Node js 中的 ssl 库中的代码

var httpPort = process.env.PORT || 80;
var httpsPort = process.env.PORT || 443;
var server = http.createServer(app).listen(httpPort);
var server = https.createServer({
    secureProtocol : 'TLSv1_2_server_method',
    ciphers : "AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH",
    honorCipherOrder : true,
    ca: fs.readFileSync(__dirname + '/niknet_ddns_net.ca-bundle'),
    cert: fs.readFileSync(__dirname + '/niknet_ddns_net.crt')

    },app).listen(httpsPort);
var io = require('socket.io').listen(server);
Run Code Online (Sandbox Code Playgroud)

但我一生都无法获得正常工作的证书。我刚刚收到这个错误

ERR_SSL_VERSION_OR_CIPHER_MISMATCH
Run Code Online (Sandbox Code Playgroud)

我一直在阅读其他帖子并尝试添加他们的代码但没有任何效果。我还在某处读到,node.js 的 ssl 或 tls 库已过时,并且我的证书可能太新。如果这是真的,我还可以使用其他第三方 ssl 库吗?

ssl node.js server tls1.2

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

node.js ×8

https ×5

javascript ×2

socket.io ×2

ssl ×2

express ×1

security ×1

server ×1

sockets ×1

tls1.2 ×1