【问题标题】:Node JS SSL pinning with self signed certificate.带有自签名证书的节点 JS SSL 固定。
【发布时间】:2018-11-29 16:41:37
【问题描述】:

我希望我的 node.js 服务器只允许包含 SSL 证书的 http 请求,以避免“中间人”

问题是使用自签名证书根本不起作用。

这是我的简单 node.js 服务器:

var fs = require('fs'); 
var https = require('https'); 
var util = require('util'); 

var options = { 
    key: fs.readFileSync('keys/myKey.key'), 
    cert: fs.readFileSync('keys/cert.crt'), 
    requestCert: true, 
    rejectUnauthorized: false, 
    agent: false,
}; 


https.createServer(options, function (req, res) { 
    console.log(new Date()+' '+ 
        req.connection.remoteAddress+' '+ 
        req.method+' '+req.url + 'auth = ' + req.client.authorized); 
    res.writeHead(200); 
    res.end("hello world\n"); 
}).listen(8443);

Client.authorized 将始终为 no,因为它是自签名证书。

知道我如何设法允许带有证书的请求并将没有证书的请求搁置到另一个地方吗?种类:

https.createServer(options, function (req, res) { 
  if (req.hasCertificateThatMatchTheOneOnMyServer) {
    // do something
  }
  else {
    // do something else
  }
}

非常感谢。

【问题讨论】:

    标签: node.js ssl


    【解决方案1】:

    设置环境变量NODE_EXTRA_CA_CERTS 指向包含服务器和客户端自签名证书的文件系统位置。

    另外,请考虑阅读此答案中的说明,以确保您的自签名证书与启用的 NodeJS 密码套件同步:https://stackoverflow.com/a/53325115/1235935

    【讨论】:

      猜你喜欢
      • 2015-06-18
      • 1970-01-01
      • 2017-07-18
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 2019-04-26
      • 2015-03-06
      相关资源
      最近更新 更多