我有一个需要连接到其 SQL Server 数据库的客户端。该 SQL Server 机器的 FQDN 是db.client.local
并且他们设置了自签名证书/启用加密。
如果我使用 Navicat 连接到这个主机(在我的主机文件中添加一个远程 IP 条目),并使用加密标记为启用,它会拒绝连接,因为 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:password@db.client.local:1234/my-test-database?Encrypt=true&TrustServerCertificate=false'
)
*/