You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python HDBCLI连接SAP HANA时遇X.509证书错误求助

解决SAP HANA Python连接的X.509证书错误

问题重现

你的代码:

from hdbcli import dbapi
import json

with open('./configure.json') as config_file:
    config = json.load(config_file)
    address = config["host"]
    port = config["port"]
    username = config["user"]
    password = config["password"]

print(address, port, username, password)

connection = dbapi.connect(
    address=address,
    port=port,
    username=username,
    password=password,
)
cursor = connection.cursor()

错误信息:

F:\Scripts\venv\Scripts\python.exe F:\Scripts\main.py
172.17.0.44 30115 XXXXXX XXXXXX_2017
Traceback (most recent call last):
File "F:\Scripts\main.py", line 13, in
connection = dbapi.connect(
hdbcli.dbapi.Error: (-10709, 'Connection failed (RTE:[-1] X.509: No key store or PEM provided (0.0.0.0:10976 -> 172.17.0.44:30115))')

Process finished with exit code 1

解决方案

这个错误是因为SAP HANA服务器要求SSL/TLS加密连接,但你的客户端未提供信任的证书文件。针对Windows 11环境,按以下步骤处理:

  • 获取服务器根证书:联系SAP HANA管理员获取服务器的根CA证书(.pem格式)。如果没有管理员支持,可通过OpenSSL导出(先安装OpenSSL,用Git Bash或WSL执行):

    openssl s_client -connect 172.17.0.44:30115 < NUL | openssl x509 -outform PEM > hana_root_ca.pem
    
  • 修改连接代码指定证书:在dbapi.connect()中添加sslTrustStore参数,指向证书文件路径:

    connection = dbapi.connect(
        address=address,
        port=port,
        username=username,
        password=password,
        sslTrustStore="F:/Scripts/hana_root_ca.pem"  # 替换为你的证书实际路径
    )
    
  • 测试环境临时方案:若为测试环境,可临时关闭证书验证(生产环境禁用此操作):

    connection = dbapi.connect(
        address=address,
        port=port,
        username=username,
        password=password,
        sslValidateCertificate=False
    )
    
  • 检查端口配置:确认30115是服务器的SSL端口(HANA默认SSL端口为30115,非SSL为30113),若服务器未启用SSL,尝试切换到非SSL端口连接。

内容的提问来源于stack exchange,提问作者kaige

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:02:46