诊断并修复失败的证书名称检查。
您已使用传输层安全 (TLS) 启动 SAP IQ 服务器。您尝试使用 TLS 将客户端连接到 SAP IQ。
以下是 Interactive SQL 连接字符串示例。(但请注意,与 TLS 连接的任何客户端软件上都可能出现此握手故障):
dbisql -c 'uid=DBA;pwd=password;eng=myserver;ENC=tls(fips=NO;tls_type=rsa;trusted_certificate=/mycertificate.id;)' -host myhost -port 26000 -nogui您会收到类似如下的错误:
Could not connect to the database.
TLS handshake failure
SQLCODE=-829, ODBC 3 State="08S01"
对于 TLS 或 HTTPS 连接,由于多种原因,可能会发生 TLS 握手失败。当证书名称检查失败时会发生这种情况。
SAP IQ 16.1 引入了证书名称检查。此功能不在 SAP IQ 16.0 及更低版本中。
启动 TLS 或 HTTPS 连接时,客户端库会根据该服务器提供的证书检查数据库服务器的主机名。针对附加安全性执行此检查。
主机名或 IP 地址派生自通用名 (CN) 字段和 subjectAltName(主体备选名称或 SAN)扩展。SAN 可能包含多个带有通配符的主机名。例如,Google 证书可能包括 *.google.com、*.google.ca 和 *.android.com。因此,www.google.ca 是有效的主机名。
假设 SAP IQ 服务器的主机名为 IQ16serv.sample.com。然后检查服务器身份证书中的公用名 (CN) 字段以查看它是否与此主机名匹配。如果不是,则检查 subjectAltName (SAN)。如果 SAN 包含 *.sample.com,则找到合适的匹配。如果没有合适的匹配,则会发生 TLS 握手失败。
如果未指定 certificate_name、certificate_company 或 certificate_unit 选项,或未启用 skip_certificate_name_check 选项,则会执行主机名检查。
如果指定了 certificate_name、certificate_company 或 certificate_unit 中的任意一个,则仅验证这些证书字段并跳过主机名检查。在这些情况下,skip_certificate_name_check 选项的设置将被忽略。
如果指定,则 certificate_name 必须与服务器证书的“公用名”字段匹配。公用名 (CN) 通常是使用该证书的服务器的全限定域名。
如果指定,certificate_company 必须与服务器证书的 Organization 字段匹配。组织 (O) 通常是公司的名称。
如果指定,certificate_unit 必须与服务器证书的组织单位字段匹配。组织单位 (OU) 通常是公司内部门的名称。
在缺少这 3 个选项之一的情况下,skip_certificate_name_check=yes 可用于跳过主机名检查。
要解决失败的证书名称检查,请在连接字符串的加密部分中包括 certificate_name、certificate_company 或 certificate_unit 中的一个或多个。
否则,可以在连接字符串的加密部分中包括 skip_certificate_name_check=yes。请参阅 skip_certificate_name_check 协议选项(仅限客户端)。
备注SAP 建议不要包括 skip_certificate_name_check=yes。启用此选项可能会阻止客户端对服务器进行完全验证,使其容易受到攻击。