我已将我的安全节点服务器设置为:
var HTTPSOptions = {
hostname: config.hostname,
cert: fs.readFileSync(config.ssl.cert_path),
key: fs.readFileSync(config.ssl.key_path),
requestCert: true,
rejectUnauthorized: false,
passphrase: config.ssl.ca_key_password
};
HTTPSOptions.agent = new https.Agent(HTTPSOptions);
var httpsServer = https.createServer(HTTPSOptions, app).listen(config.https_port, function () {
console.info("HTTPS server running on %d", config.https_port);
});
我还为其中一位客户制作了client.key
,client.crt
和client.csr
,并使用服务器.key
和{{}进行了签名{1}}。
现在,我想从客户端连接到我的API。阅读cURL的工作原理,我用过:
.crt
这样可以正常工作,但是如果我提供任何密钥/证书或任何密码,或者即使我没有提供任何密钥/证书,相同的代码也能正常工作!
有人可以赐教我吗?
答案 0 :(得分:1)
您已将服务器设置为通过HTTPS与任何客户端进行通信。如果您希望将与之通信的客户端限制为具有特定证书的客户端,则需要在服务器代码中进行其他检查。
Nate Good wrote a tutorial that might point you down the right path.这是一个片段,可以让您了解需要注意的事项:
https.createServer(options, function (req, res) {
if (req.client.authorized) {
res.writeHead(200, {"Content-Type": "application/json"});
res.end('{"status":"approved"}');
} else {
res.writeHead(401, {"Content-Type": "application/json"});
res.end('{"status":"denied"}');
}
}).listen(443);