我已经创建了一个自签名证书,将其添加到Heroku,并在Heroku上配置了一个SSL端点,我记录heroku certs:info它似乎就在那里.
我正在Express上创建我的服务器,如下所示:
var server = require('http').createServer(app);
Run Code Online (Sandbox Code Playgroud)
然后重定向到https这样:
app.use(function(req, res, next) {
var reqType = req.headers["x-forwarded-proto"];
reqType == 'https' ? next() : res.redirect("https://" + req.headers.host + req.url);
});
Run Code Online (Sandbox Code Playgroud)
服务器运行正常,但我在SO上遇到了这个代码片段来创建一个https服务器:
var keys_dir = './sslcert/';
var server_options = {
key : fs.readFileSync(keys_dir + 'server.key'),
ca : fs.readFileSync(keys_dir + 'server.csr'),
cert : fs.readFileSync(keys_dir + 'server.crt')
}
var server = require('https').createServer(server_options,app);
Run Code Online (Sandbox Code Playgroud)
我没有像这个例子那样指向certs/keys,我的网站在https上运行(尽管锁是红色的,因为它是自签名的).
所以我的问题是,我的服务器如何知道我的密钥/证书,而没有我像代码片段那样明确地指向他们server_options?这是Heroku在幕后照顾的吗?
我在Heroku上设置的SSL端点如何与http我创建的服务器交互var server = require('http').createServer(app);?
编辑 …