永远不会调用SNICallback

时间:2014-07-25 15:05:46

标签: node.js

我试图将两个独立域指向我的node.js服务器。一切都很好,但HTTPS。 我意识到我在单个Web服务器上使用两个独立的HTTPS地址的唯一选择是使用SNI,但我无法在我的节点服务器中使用它。 以下是我尝试做的一个简单示例:

'use strict';

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

var options = {
  key: fs.readFileSync('ssl/server.key'),
  passphrase: 'something',
  cert: fs.readFileSync('ssl/xxx.crt'),
  ca: fs.readFileSync('ssl/ca.crt'),

  // Dynamic certificate check
  SNICallback: function (servername) {
    console.log('sni:', servername); // This function is never called
  }
};

https.createServer(options, function (req, res) {

  req.on('end', function () {
    res.writeHead(200, {'Content-Type':'application/json'});
    res.end('{}');
  });

}).listen(443);

我知道所有浏览器都不支持SNI,它只适用于TLS,但我使用Chrome 36,Firefox 30和IE 10进行了测试。 我还测试了将secureProtocol更改为'TLSv1_method''SSLv3_method',但它也没有用。

有没有让它发挥作用? 还有其他解决方案不需要SNI吗?它与节点无关但我知道GNU中有一个gnutls_certificate_set_retrieve_function2函数。

0 个答案:

没有答案