Я пытаюсь создать базовое соединение SSL из приложения node.js на локально размещенный сервер nginx; он также включает отправку учетных данных клиента. Рукопожатие кажется, что оно было успешным, так как вызов «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