1
我试图创建一个从node.js应用程序到本地托管的nginx服务器的基本SSL连接;它还涉及发送客户的凭证。握手似乎是成功的,因为在“安全”事件中调用“verifyPeer”可以验证那么多。但是,服务器继续只响应400响应。node.js和nginx SSL握手失败
如果我做在命令行上的卷曲相同的请求,我回到我的期望:
curl -v -E curl-test.crt --cacert ca.crt https://internal.url:7443/some.file
“的卷翘test.crt”是通过连接客户端密钥和证书一起创建的。
这里是得到一个故障所需的Node.js代码最小位:
global.util = require('util');
var fs = require('fs'),
http = require('http'),
crypto = require('crypto');
var clientCert = fs.readFileSync("tmp/cert.crt", 'ascii'),
clientKey = fs.readFileSync("tmp/key.key", 'ascii'),
caCert = fs.readFileSync("tmp/ca.crt", 'ascii');
var credentials = crypto.createCredentials({"key": clientKey, "cert": clientCert, "ca": caCert});
var client = http.createClient(7443, "internal.url", true, credentials);
client.addListener("secure", function() {
if (!client.verifyPeer()) {
throw new Exception("Could not verify peer");
}
});
var request = client.request('GET', '/some.file', {});
request.on('response', function(response) {
response.on('data', function(body) {
util.log("body: " + body);
});
});
request.end();
这里是我得到的,不管什么样的反应“some.file”更改为:
body: <html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/0.6.32</center>
</body>
</html>
调试任何帮助或解决这一问题将是非常美妙
你是本周的男人!我没有看到你在任何日志文件中列出的错误消息(可能是日志设置),但我尝试了主机设置,而且确实有效。非常感谢你! – Gus 2010-11-24 17:40:34