Я создал http-клиент с помощью NodeJS, как показано ниже:
var options = {
hostname: 'localhost',
port: 8445,
path: 'authorisation/getIt',
method: 'GET',
ca: fs.readFileSync('root_cert.pem', 'utf8'),
key: fs.readFileSync('consumer_private_key.pem', 'utf8'),
cert: fs.readFileSync('consumer_cert.pem', 'utf8'),
passphrase: 'password',
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.byteLength(body)
}
};
var request = new https.request(options, function(response) {
response.on('data', function(chunk) {
console.info("%s", chunk);
})
Когда я запускаю этого клиента на сервере, я получаю сообщение об ошибке
Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames: Host: localhost. is not cert's CN: LC_AAA_Server at Object.checkServerIdentity (tls.js:225:17) at TLSSocket.onConnectSecure (_tls_wrap.js:1046:27) at TLSSocket.emit (events.js:127:13) at TLSSocket._finishInit (_tls_wrap.js:633:8)
Если я изменю поле имени хоста на текст в CN сертификата сервера, клиент выдаст ошибку
Error: getaddrinfo ENOTFOUND LC_AAA_Server
Как я могу изменить имя хоста, чтобы оно соответствовало CN сертификата сервера, но чтобы клиент по-прежнему указывал на сервер, размещенный на локальном хосте.
заранее спасибо
Разве вы не можете сгенерировать еще один сертификат с другим альтернативным именем?
Нет никакого способа сделать это.