[BUG] Error When Connecting to the Postgres ODBC with SSLMode Required
Describe your system
odbcPackage Version: 2.4.8- ODBC Driver: unixODBC
- Database Name: Postgres
- Database Version: 15.4
- Node.js Version: 18
- Node.js OS: Linux
Describe the bug
We have a Postgres database setup in AWS RDS and tried to connect to it with SSL turned on. We tested it out and was able to connect perfectly fine with the option sslmode=required with isql. But when we do the same thing with node-odbc, it just crashes the system that we were using. It seems like there might be an error that is not handled from the node-odbc client
Expected behavior
We should be able to connect normally with the sslmode=required option on the Postgres database
To Reproduce Steps to reproduce the behavior:
- Setup a Postgres database on AWS RDS. Version has to be at least v15
- Make sure to have SSL enabled in the param group
- Install the Postgres ODBC driver
- Connect to database with options 'Driver={Postgres};Server=<host from RDS instance>;Uid=
;Pwd= ;Port=5432;Database=postgres;SSLMode=require;'
Code
const connection = await odbc.connect({
'Driver={Postgres};Server=<host from RDS instance>;Uid=<user>;Pwd=<password>;Port=5432;Database=postgres;SSLMode=require;',
});
- The offending code: not sure
- Any error information returned from a function call: Here is a stack trace when calling the connect function
[sombra:multi-tenant] Signal received: -1364433936, errno: 32531
[sombra:multi-tenant] ################################################################################
[sombra:multi-tenant] Stack trace:
[sombra:multi-tenant] ################################################################################
[sombra:multi-tenant] /workspaces/main/.yarn/unplugged/aws-crt-npm-1.14.4-f979bc4045/node_modules/aws-crt/dist/bin/linux-x64/aws-crt-nodejs.node(aws_backtrace_print+0x41) [0x7f1399e77fb1]
[sombra:multi-tenant] /workspaces/main/.yarn/unplugged/aws-crt-npm-1.14.4-f979bc4045/node_modules/aws-crt/dist/bin/linux-x64/aws-crt-nodejs.node(+0x6d363) [0x7f1399c6d363]
[sombra:multi-tenant] /lib/x86_64-linux-gnu/libpthread.so.0(+0x13140) [0x7f13b78dc140]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/libssl.so.1.1(SSL_get_peer_certificate+0x13) [0x7f139a2742a3]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/libpq.so.5(+0x279c7) [0x7f13ac0319c7]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/libpq.so.5(PQconnectPoll+0x1058) [0x7f13ac01abb8]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/libpq.so.5(+0x11cda) [0x7f13ac01bcda]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/libpq.so.5(PQconnectdbParams+0x38) [0x7f13ac01f2c8]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so(+0x160ee) [0x7f13b40190ee]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so(+0x1b3fd) [0x7f13b401e3fd]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so(+0x287f3) [0x7f13b402b7f3]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so(SQLDriverConnect+0xa0) [0x7f13b4058660]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/libodbc.so.2(SQLDriverConnect+0xa1f) [0x7f1398da650f]
[sombra:multi-tenant] /workspaces/main/.yarn/unplugged/odbc-npm-2.4.8-8755be8544/node_modules/odbc/lib/bindings/napi-v6/odbc.node(_ZN18ConnectAsyncWorker7ExecuteEv+0xa7) [0x7f1399016237]
[sombra:multi-tenant] /usr/local/bin/node(_ZZN4node14ThreadPoolWork12ScheduleWorkEvENUlP9uv_work_sE_4_FUNES2_+0x5a) [0xb4136a]
[sombra:multi-tenant] /usr/local/bin/node() [0x1659c24]
[sombra:multi-tenant] /lib/x86_64-linux-gnu/libpthread.so.0(+0x7ea7) [0x7f13b78d0ea7]
[sombra:multi-tenant] /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f13b77f0a2f]
[sombra:multi-tenant] Signal received: 1, errno: 0
[sombra:multi-tenant] ################################################################################
[sombra:multi-tenant] Stack trace:
[sombra:multi-tenant] ################################################################################
[sombra:multi-tenant] /workspaces/main/.yarn/unplugged/aws-crt-npm-1.14.4-f979bc4045/node_modules/aws-crt/dist/bin/linux-x64/aws-crt-nodejs.node(aws_backtrace_print+0x41) [0x7f1399e77fb1]
[sombra:multi-tenant] /workspaces/main/.yarn/unplugged/aws-crt-npm-1.14.4-f979bc4045/node_modules/aws-crt/dist/bin/linux-x64/aws-crt-nodejs.node(+0x6d363) [0x7f1399c6d363]
[sombra:multi-tenant] /lib/x86_64-linux-gnu/libpthread.so.0(+0x13140) [0x7f13b78dc140]
[sombra:multi-tenant] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141) [0x7f13b772dce1]
[sombra:multi-tenant] /lib/x86_64-linux-gnu/libc.so.6(abort+0x123) [0x7f13b7717537]
[sombra:multi-tenant] /usr/local/bin/node() [0xaab2ff]
[sombra:multi-tenant] /usr/local/bin/node(uv_library_shutdown+0x1e) [0xaab81e]
[sombra:multi-tenant] /lib64/ld-linux-x86-64.so.2(+0x10373) [0x7f13b7c38373]
[sombra:multi-tenant] /lib/x86_64-linux-gnu/libc.so.6(+0x3b4d7) [0x7f13b77304d7]
[sombra:multi-tenant] /lib/x86_64-linux-gnu/libc.so.6(+0x3b67a) [0x7f13b773067a]
[sombra:multi-tenant] /workspaces/main/.yarn/unplugged/aws-crt-npm-1.14.4-f979bc4045/node_modules/aws-crt/dist/bin/linux-x64/aws-crt-nodejs.node(+0x6d36d) [0x7f1399c6d36d]
[sombra:multi-tenant] /lib/x86_64-linux-gnu/libpthread.so.0(+0x13140) [0x7f13b78dc140]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/libssl.so.1.1(SSL_get_peer_certificate+0x13) [0x7f139a2742a3]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/libpq.so.5(+0x279c7) [0x7f13ac0319c7]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/libpq.so.5(PQconnectPoll+0x1058) [0x7f13ac01abb8]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/libpq.so.5(+0x11cda) [0x7f13ac01bcda]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/libpq.so.5(PQconnectdbParams+0x38) [0x7f13ac01f2c8]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so(+0x160ee) [0x7f13b40190ee]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so(+0x1b3fd) [0x7f13b401e3fd]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so(+0x287f3) [0x7f13b402b7f3]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so(SQLDriverConnect+0xa0) [0x7f13b4058660]
[sombra:multi-tenant] /usr/lib/x86_64-linux-gnu/libodbc.so.2(SQLDriverConnect+0xa1f) [0x7f1398da650f]
[sombra:multi-tenant] /workspaces/main/.yarn/unplugged/odbc-npm-2.4.8-8755be8544/node_modules/odbc/lib/bindings/napi-v6/odbc.node(_ZN18ConnectAsyncWorker7ExecuteEv+0xa7) [0x7f1399016237]
[sombra:multi-tenant] /usr/local/bin/node(_ZZN4node14ThreadPoolWork12ScheduleWorkEvENUlP9uv_work_sE_4_FUNES2_+0x5a) [0xb4136a]
[sombra:multi-tenant] /usr/local/bin/node() [0x1659c24]
[sombra:multi-tenant] /lib/x86_64-linux-gnu/libpthread.so.0(+0x7ea7) [0x7f13b78d0ea7]
[sombra:multi-tenant] /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f13b77f0a2f]
My guess is this is similar to #239. Node.js provides a version of OpenSSL itself, which may conflict with other versions of OpenSSL that drivers link to. Node.js 18+ use OpenSSL 3.x while this driver is linked to OpenSSL 1.1.
This is an unfortunate issue that affects all addons, not just node-odbc. See https://github.com/nodejs/node/issues/24964 for more context.
There's a couple solutions:
- Use Node.js 16, which still uses OpenSSL 1.1 but is no longer supported/updated
- Upgrade Postgres driver to a version which uses OpenSSL 3, but that likely requires upgrading your OS/container
- Use a different Node.js build, which links Node.js to the system OpenSSL version instead of using Node.js's provided OpenSSL version. I know at least Debian/Ubuntu nodejs packages do this, possibly other distros too.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.