我的公司使用 Jumpbox 来访问 Oracle 数据库。我已经在 VS code 中安装了 SSH-Remote 扩展,并且可以连接到 Jumpbox。
在跳转盒上,我可以启动一个终端窗口并输入“sqlplus user@tnsname”,然后输入我的密码,我就可以连接到数据库。
我已经安装了Oracle Developer Tools扩展并配置了tns文件路径。一切似乎都正确解析,但是当我通过选择“测试”来测试数据库连接时,UI 报告: TLS 握手失败
我假设我需要在 VS Code 中进行一些额外的配置,但我不知道从哪里开始。
经过更多分析,根本问题似乎是: IO 错误 PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
VS Code 是否进行了更严格的证书验证,或者证书存储配置是否有所不同?
该扩展看起来仍然是通过 Java 运行的,因此它带有自己的 jdk(因此它有自己的 CACERTS)
C:\Users\<me>\.vscode\extensions\oracle.sql-developer-23.4.1-win32-x64\dbtools\jdk\lib\security\cacerts
只需使用 keytool 将 TLS 连接的签名根导入到上面的 cacerts 中
keytool -importcert -keystore C:\Users\<me>\.vscode\extensions\oracle.sql-developer-23.4.1-win32-x64\dbtools\jdk\lib\security\cacerts -storepass changeit -file .\hostroot.crt -alias 'db-tls-root'