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

SUSE Linux多租户SAP HANA租户库SSL连接错误:主体名称不符

解决SUSE Linux多租户SAP HANA租户数据库SSL连接错误:Cannot create SSL Engine: The target principle name is incorrect

我之前处理过好几起类似的多租户HANA SSL连接问题,结合你的描述,这个报错的核心原因确实是系统数据库与租户数据库的SSL证书主体名不匹配,下面给你拆解根源和具体的解决步骤:

问题根源解析

你提到服务器证书是在系统数据库上创建的,而租户数据库默认会继承系统库的SSL相关配置——但这里的关键是:系统库生成的证书,其主体名(Principal Name)是对应系统库的服务标识(比如hdb@<系统库主机名>或者特定的CN字段),当客户端尝试连接租户库时,会验证租户库的服务主体名,但证书里的主体名和租户的不匹配,就触发了SSL握手的“目标主体名不正确”错误。

具体解决步骤

1. 先确认当前的SSL配置和证书主体名

  • 登录系统数据库,执行SQL查询租户的SSL配置:
    SELECT * FROM SYS.M_SSL_CONFIGURATION WHERE DATABASE_NAME = '<你的租户库名>';
    
    查看返回的SSL_CERTIFICATE和SSL_KEY路径,确认是不是指向系统库的证书文件。
  • 在SUSE服务器上,用openssl命令查看证书的主体名:
    openssl x509 -in /usr/sap/<SID>/HDB<实例号>/cert/server.crt -noout -subject
    
    输出的CN=字段就是证书的主体名,对比租户库的服务名(通常是hdb@<租户库主机名>或者你的客户端连接时指定的主机名),就能确认不匹配的问题。

2. 为租户数据库生成独立的SSL证书

你有两个选项:

  • 选项A:生成包含租户主体名的新证书
    登录HANA系统库,用CREATE CERTIFICATE命令为租户生成专属证书,指定正确的主体名:
    CREATE CERTIFICATE FOR '<租户库名>' 
      SUBJECT 'CN=<租户库主机名>, OU=SAP, O=YourCompany, C=CN'
      VALID UNTIL '2030-12-31'
      STORE IN FILE '/usr/sap/<SID>/HDB<实例号>/cert/tenant_<租户库名>.crt'
      KEY STORE IN FILE '/usr/sap/<SID>/HDB<实例号>/cert/tenant_<租户库名>.key';
    
  • 选项B:修改现有证书为通配符或SAN扩展
    如果你的多租户共享同一个主机名,可以重新生成系统库证书,加入通配符CN(比如CN=*.yourdomain.com)或者SAN扩展包含所有租户的服务名,这样所有租户都能复用这个证书。

3. 更新租户数据库的SSL配置

执行ALTER SYSTEM命令,让租户使用新的证书:

ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'database', '<租户库名>') 
  SET ('ssl', 'ssl_certificate') = '/usr/sap/<SID>/HDB<实例号>/cert/tenant_<租户库名>.crt' 
  WITH RECONFIGURE;

ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'database', '<租户库名>') 
  SET ('ssl', 'ssl_key') = '/usr/sap/<SID>/HDB<实例号>/cert/tenant_<租户库名>.key' 
  WITH RECONFIGURE;

4. 重启租户服务并测试连接

  • 在SUSE上用sapcontrol命令重启租户:
    sapcontrol -nr <实例号> -function StopService <租户库名>
    sapcontrol -nr <实例号> -function StartService <租户库名>
    
  • 然后用HANA Studio或者hdbsql命令测试SSL连接:
    hdbsql -n <主机名>:<租户端口> -u <用户名> -p <密码> -ssl
    

额外注意事项

  • 确保证书文件的权限正确:HANA的sid用户(比如adm<SID>)需要有证书和密钥文件的读取权限,可执行:
    chown <sid>adm:sapsys /usr/sap/<SID>/HDB<实例号>/cert/tenant_<租户库名>.*
    chmod 600 /usr/sap/<SID>/HDB<实例号>/cert/tenant_<租户库名>.key
    
  • 如果客户端使用了信任库,需要把新的租户证书导入到客户端的信任存储中,避免出现证书不被信任的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:24:25