使用节点和使用cURL对SSL的困惑

时间:2015-05-18 16:37:20

标签: node.js ssl curl

我已将我的安全节点服务器设置为:

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.keyclient.crtclient.csr,并使用服务器.key和{{}进行了签名{1}}。

现在,我想从客户端连接到我的API。阅读cURL的工作原理,我用过:

.crt

这样可以正常工作,但是如果我提供任何密钥/证书或任何密码,或者即使我没有提供任何密钥/证书,相同的代码也能正常工作!

有人可以赐教我吗?

1 个答案:

答案 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);