CubeJS通过MongoDB BI Connect连接MongoDB报SSL及PEM文件错误如何解决
故障根因说明
- mongosqld侧抛出的
PEM routines:PEM_read_bio:no start line是核心错误,说明你生成的mongo.pem文件格式不符合规范,无法被SSL模块加载;CubeJS侧的SSL版本号错误是SSL握手失败的衍生报错,根因都在PEM文件异常上。
排查与解决步骤
- 首先校验PEM文件合法性,执行如下openssl命令:
openssl x509 -in mongo.pem -text -noout
如果命令执行报错,直接确认PEM文件结构异常,需要重新生成。
- 按照标准流程重新生成合法的PEM文件:
- 生成私钥文件:
openssl genrsa -out mongo.key 2048 - 生成证书签名请求,Common Name项填写
localhost(和你CubeJS配置的DB_HOST一致):openssl req -new -key mongo.key -out mongo.csr - 生成自签名证书:
openssl x509 -req -days 365 -in mongo.csr -signkey mongo.key -out mongo.crt - 合并私钥和证书为PEM文件:
Windows环境不要用记事本手动复制粘贴合并,避免换行符编码错误,建议用Git Bash/WSL执行以下命令cat mongo.key mongo.crt > mongo.pem
- 确认mongosqld启动参数中
--sslPEMKeyFile指向最新生成的mongo.pem的绝对路径,避免相对路径读取失败,同时确认运行mongosqld的用户有该文件的读取权限。 - 先通过MySQL客户端验证mongosqld连接正常后再启动CubeJS:
mysql --host=localhost --user=useradmin --password=xxxx --ssl-mode=REQUIRED
如果能正常进入MySQL交互终端,说明mongosqld侧SSL配置已经正常,再启动CubeJS即可完成连接。
内容的提问来源于stack exchange,提问作者user3863585
相关产品推荐
相关产品推荐

