我对ssl很新,并且无法使用https设置我的节点项目。我已经注册并获得了StartSSL的免费证书。我的私钥在名为key.pem的文件中。我已经验证了我的域名,并将我的证书放在cert.pem文件中。
以下是我在HTTP上设置服务器的方法:
var server = require('http').createServer(app);
var port = process.env.PORT || 3000;
server.listen(port, function () {
console.log('Server listening at port %d', port);
});
这很好用,我的所有页面都相应加载。 以下是我尝试设置https服务器的方法:
var https = require("https");
var fs = require("fs");
var key_file = "key.pem";
var cert_file = "cert.pem";
var passphrase = "...";
var config = {
key: fs.readFileSync(key_file),
cert: fs.readFileSync(cert_file),
passphrase: passphrase
};
var server = https.createServer(config,app).listen(443);
问题是localhost不会加载任何东西。我的控制台没有任何错误,这很烦人,因为我不知道我做错了什么。正如你所看到的那样,我只是将我的密钥和证书放在我项目的根目录中,我不确定我是否应该这样做。 我不应该只能访问localhost:443或https://localhost:443并查看我的网站?我现在试着按照6个教程进行操作,似乎无法正常工作。我甚至这样做了吗?因为我没有从客户那里得到任何我认为应该做的证明。
也试过这个也行不通:
var https = require("https");
var constants = require("constants");
var fs = require("fs");
var passphrase = "...";
https.createServer({
key: fs.readFileSync("key.pem"),
cert: fs.readFileSync("cert.pem"),
passphrase: passphrase,
secureProtocol: 'SSLv23_method',
honorCipherOrder: true,
secureOptions: constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_SSLv2
}, function(req, res) {
req.end("Hello, SSL World!");
}).listen(443, function() {
console.log("SSL Proxy listening on port 443");
});
即使它说它在控制台中正在侦听443,也无法获得hello世界。
编辑: 这是我的整个index.js,我仍然无法得到你好的世界。所有依赖项都已安装。可能是什么问题?
var express = require('express');
var app = express();
var https = require("https");
var fs = require("fs");
var options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
https.createServer(options, function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(8000);
答案 0 :(得分:0)
我已经尝试过您的代码,但它确实有效。 但是你需要改变
req.end("Hello, SSL World!");
到
res.end("Hello, SSL World!");
否则尝试遵循这个更简单的示例 documentation
确保以root用户身份启动服务器,因为您正在使用端口443