У меня есть клиент, для которого требуется подключение базы данных SQL Server. Полное доменное имя этого компьютера SQL Server - db.client.local
, и они установили самозаверяющее шифрование с сертификатом/включением.Проверьте сертификат с SQL Server в узле
Если я подключился к этому хосту (добавив запись в удаленный IP-адрес в файле моих хостов), используя Navicat с включенным в него значком шифрования, он отвергает соединение как ненадежное из-за ненадежности CA, чего я ожидаю.
В узле с использованием node-mssql
и tedious
Я могу подключиться и запросить сервер, однако проверка не происходит. Как я могу получить node-mssql
, чтобы проверить сертификат? В этом случае я должен также иметь возможность предоставлять собственный сертификат CA.
Вот мой код до сих пор
var sql = require('mssql'),
evilDns = require('evil-dns');
// Set up the mapping so that I can access via their local dns
evilDns.add('db.client.local' , '1.2.3.4');
// Works without erroring
new sql.connect({
user: 'user',
password: 'password',
server: 'db.client.local',
database: 'my-test-database',
port: 1234,
options: {
encrypt: true // seems decorative, connection encrypts without this
}
}).then(
function(connection) {
return new sql.Request(connection)
.query(`SELECT * FROM TableWithStuffIn`)
.then(function(response) {
console.log(response);
return connection.close();
});
},
function(err) {
console.log(err);
return Promise.reject();
}
)
// This also works without erroring
/*
new sql.connect(
'mssql://user:[email protected]:1234/my-test-database?Encrypt=true&TrustServerCertificate=false'
)
*/
Это выглядит как 'tedious' в настоящее время не поддерживает проверку сертификата - https://github.com/pekim/tedious/issues/282 –
у меня есть су bmitted запрос на перенос на утомительный, который добавит опцию trustServerCertificate - будет обновляться с ответом, если это принято https://github.com/pekim/tedious/pull/399 –