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