nodejs v6.11.2 ssl 连接使用 mysql2 实用程序使用池连接

问题描述

我们正在使用节点 v6.11.2 和使用 MysqL2 实用程序/模块的池连接 下面是代码片段。

const MysqL = require('MysqL2');
const cpmPoolConfig = {
    connectionLimit: config.get('MysqL_cpm.connectionLimit'),host: config.get('MysqL_cpm.host'),port: config.get('MysqL_cpm.port'),user: config.get('MysqL_cpm.user'),password: config.get('MysqL_cpm.password'),database: config.get('MysqL_cpm.database'),debug: config.get('MysqL_cpm.debug'),}
const poolCpm = MysqL.createPool(cpmPoolConfig);
 var getConnectionCpm = function () {
        return getConnectionWithRetry(poolCpm).disposer(function (connection) {
            serverLOG.debug('Releasing db connection.');
            connection.release();
        });
    }  

我们想使用 ssl 加密连接,我在下面尝试过但没有成功。

const fs = require('fs');    
const cpmPoolConfig = {
    connectionLimit: config.get('MysqL_cpm.connectionLimit'),password: encryptionUtil.decrypt(config.get('MysqL_cpm.password')),ssl: {
        ca: fs.readFileSync('/data/celo/dbcerts/ca.pem'),cert: fs.readFileSync('/data/celo/dbcerts/client-cert.pem'),key: fs.readFileSync('/data/celo/dbcerts/client-key.pem')
    }
}

错误

{"name":"searchmember-api","hostname":"lba-ovn-1664.loyalty.com","pid":13728,"level":40,"msg":"错误发生时获取连接:错误:140086462822176:错误:1409441B:SSL 例程:ssl3_read_bytes:tlsv1 警报解密错误:../deps/openssl/openssl/ssl/s3_pkt.c:1494:SSL 警报编号:5082014792SSL:ssl3_read_bytes:tlsv1例程:ssl3_read_bytes:ssl 握手失败:../deps/openssl/openssl/ssl/s3_pkt.c:1217:\n\n at Error (native)","time":"2020-12-23T23:06:31.501 Z","src":{"file":"/data/celo/servers/searchmember-api/node_modules/searchmember-api/app/helpers/dbutils.js","line":111},"v": 0} {"name":"searchmember-api","level":50,"msg":"获取数据库时出错连接:cpm 错误错误:140086462822176:错误:1409441B:SSL 例程:ssl3_read_bytes:tlsv1 警报解密错误:... 140940E5:SSL 例程:ssl3_read_bytes:ssl 握手失败:../deps/openssl/openssl/ssl/s3_pkt.c:1217:\n\n 在错误 (native)","time":"2020-12-23T23: 06:31.502Z","line":76}," v":0} {"name":"searchmember-api","msg":"错误:140086462822176:错误: 1409441B:SSL 例程:ssl3_read_bytes:tlsv1 警报解密错误:../deps/openssl/openssl/ssl/s3_pkt.c:1494:SSL 警报编号 51\n140086462822176:error:140086462822176:error:140086462822176:error:140086462822176:error:140086462822176:error:1400864628221940 ./deps/openssl/openssl/ssl/s3_pkt.c:1217:\n\n at Error (native)","time":"2020-12-23T23:06:31.503Z","src":{" file":"/data/celo/servers/searchmember-api/node_modules/searchmember-api/app/controllers/SearchMemberController.js","line":26},"v":0}

解决方法

最终通过点击找到解决方案并尝试:

 ssl: config.get('mysql_ssl.required'),dialectOptions: {
        ssl: {
            ssl: config.get('mysql_ssl.required'),ca: fs.readFileSync(config.get('mysql_ssl.caPath')),cert: fs.readFileSync(config.get('mysql_ssl.certPath')),key: fs.readFileSync(config.get('mysql_ssl.keyPath'))
        }
    }