您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

Encryption (ENC) 连接参数

指定客户端应用程序与数据库服务器之间发送的数据包的编码。您可以指定无编码、简单模糊处理或 TLS(传输层安全)加密。

语法{ Encryption | ENC }= { NONE | SIMPLE | TLS ( [; ...] ) ::= { FIPS={ ON | OFF } | TRUSTED_CERTIFICATES={ NONE | [, ...] } | CERTIFICATE_COMPANY= | CERTIFICATE_NAME= | CERTIFICATE_UNIT= | SKIP_CERTIFICATE_NAME_CHECK={ ON | OFF } | IDENTITY= | IDENTITY_PASSWORD= | TLS_TYPE=rsa | DIRECT={ YES | NO } | MIN_TLS_VERSION= } ::= { * | <public-certificate-filename> | }

用法

TLS:仅支持 TCP/IP

NONE 或 SIMPLE:任何位置

允许值

  • 无 接受未加密的通信包。

  • 简单 接受使用简单模糊处理编码的通信包。所有平台以及先前版本的 SAP IQ 都支持此值。简单模糊处理不提供数据库服务器验证、高度加密或传送层安全的其它功能。如果数据库服务器接受简单模糊处理,但不接受未加密的通信,则所有不使用加密的非 TDS 连接尝试都会自动使用简单模糊处理。使用 -ec SIMPLE 启动数据库服务器会通知数据库服务器只接受使用简单模糊处理的连接。请求 RSA 加密或 FIPS 认证的 RSA 加密的 TLS 连接将失败,无加密请求的连接使用简单模糊处理。

  • TLS 接受使用 TLS 加密的通信包。 对于 FIPS 认证的 TLS,请指定 FIPS=ON。FIPS 认证的 TLS 使用单独的认证库,但与使用非认证 TLS 的 SAP IQ 9.0.2 或更高版本数据库服务器兼容。TRUSTED_CERTIFICATES 为 TRUSTED_CERTIFICATES 协议选项指定 NONE 以建立 TLS 连接,而无需验证服务器的证书。在不验证服务器证书的情况下进行连接的安全性低于验证证书,因为客户端无法再防止中间人攻击。但是,连接仍高度加密并阻止重放攻击,这比完全没有加密更安全。使用 none 选项,客户端不需要受信任的根证书。NONE 不能多次指定,也不能在 子句中指定。在 子句中,* 不能多次指定,但 <public-certificate-filename> 或 可以。TRUSTED_CERTIFICATES 的单数和复数版本均有效。CERTIFICATE_COMPANY、CERTIFICATE_NAME、CERTIFICATE_UNIT 无论您使用的是公共证书还是操作系统证书存储库中的证书,客户端都支持这些参数来验证数据库服务器证书中的字段值。主机名或 IP 地址派生自 subjectAltName(主体备选名称或 SAN)扩展以及通用名 (CN) 字段。SAN 可能包含多个带有通配符的主机名。例如,Google 证书可能包括 *.google.com、*.google.ca 和 *.android.com。因此,www.google.ca 是有效的主机名。启动 TLS 连接时,客户端库会根据该服务器提供的证书检查数据库服务器的主机名。仅当未指定 CERTIFICATE_COMPANY、CERTIFICATE_NAME、CERTIFICATE_UNIT 选项或 SKIP_CERTIFICATE_NAME_CHECK=OFF 时,才会进行此检查。如果指定任何 CERTIFICATE_COMPANY、CERTIFICATE_NAME、CERTIFICATE_UNIT,则仅验证这些选项。SKIP_CERTIFICATE_NAME_CHECK 指定 SKIP_CERTIFICATE_NAME_CHECK=ON 以防止主机名检查。将此选项设置为 ON 可能会阻止客户端对数据库服务器进行完全验证。IDENTITY_PASSWORD 指定加密证书的密码。TLS_TYPE 指定用于连接的加密类型。唯一支持的值为 rsa。DIRECT 通过代理进行连接时,指定 DIRECT=YES。DIRECT=YES 不能与 SERVER 或 ENG 参数一起使用,如果指定 VERIFY=YES,则不能将其与 LINKS 参数一起使用。MIN_TLS_VERSION 使用 MIN_TLS_VERSION 指定最低降级 TLS 版本。 的支持值为 1.2 和 1.3。期间是可选的,因此您也可以指定 12 和 13。缺省值为 1.2,导致数据湖允许 TLS 1.2 和 1.3,服务器和客户端协商它们都支持的最高协议。请参见“min_tls_version 协议选项”。有关支持的密码套件的列表,请参阅 TLS 支持。

  • 对于 FIPS 认证的 TLS,请指定 FIPS=ON。FIPS 认证的 TLS 使用单独的认证库,但与使用非认证 TLS 的 SAP IQ 9.0.2 或更高版本数据库服务器兼容。

  • TRUSTED_CERTIFICATES 为 TRUSTED_CERTIFICATES 协议选项指定 NONE 以建立 TLS 连接,而无需验证服务器的证书。在不验证服务器证书的情况下进行连接的安全性低于验证证书,因为客户端无法再防止中间人攻击。但是,连接仍高度加密并阻止重放攻击,这比完全没有加密更安全。使用 none 选项,客户端不需要受信任的根证书。NONE 不能多次指定,也不能在 子句中指定。在 子句中,* 不能多次指定,但 <public-certificate-filename> 或 可以。TRUSTED_CERTIFICATES 的单数和复数版本均有效。

  • CERTIFICATE_COMPANY、CERTIFICATE_NAME、CERTIFICATE_UNIT 无论您使用的是公共证书还是操作系统证书存储库中的证书,客户端都支持这些参数来验证数据库服务器证书中的字段值。主机名或 IP 地址派生自 subjectAltName(主体备选名称或 SAN)扩展以及通用名 (CN) 字段。SAN 可能包含多个带有通配符的主机名。例如,Google 证书可能包括 *.google.com、*.google.ca 和 *.android.com。因此,www.google.ca 是有效的主机名。启动 TLS 连接时,客户端库会根据该服务器提供的证书检查数据库服务器的主机名。仅当未指定 CERTIFICATE_COMPANY、CERTIFICATE_NAME、CERTIFICATE_UNIT 选项或 SKIP_CERTIFICATE_NAME_CHECK=OFF 时,才会进行此检查。如果指定任何 CERTIFICATE_COMPANY、CERTIFICATE_NAME、CERTIFICATE_UNIT,则仅验证这些选项。

  • SKIP_CERTIFICATE_NAME_CHECK 指定 SKIP_CERTIFICATE_NAME_CHECK=ON 以防止主机名检查。将此选项设置为 ON 可能会阻止客户端对数据库服务器进行完全验证。

  • IDENTITY_PASSWORD 指定加密证书的密码。

  • TLS_TYPE 指定用于连接的加密类型。唯一支持的值为 rsa。

  • DIRECT 通过代理进行连接时,指定 DIRECT=YES。DIRECT=YES 不能与 SERVER 或 ENG 参数一起使用,如果指定 VERIFY=YES,则不能将其与 LINKS 参数一起使用。

  • MIN_TLS_VERSION 使用 MIN_TLS_VERSION 指定最低降级 TLS 版本。 的支持值为 1.2 和 1.3。期间是可选的,因此您也可以指定 12 和 13。缺省值为 1.2,导致数据湖允许 TLS 1.2 和 1.3,服务器和客户端协商它们都支持的最高协议。请参见“min_tls_version 协议选项”。有关支持的密码套件的列表,请参阅 TLS 支持。

    缺省

    备注

    此参数可用于使用传输层安全 (TLS) 或简单模糊处理对客户端应用程序与数据库服务器之间的通信进行编码。

    FIPS 认证的加密需要单独的许可。

    对于客户端验证数据库服务器所使用的单向验证,请使用 TRUSTED_CERTIFICATE 选项。如果要启用数据库服务器也用于验证客户端的双向验证,请使用 IDENTITY 和 IDENTITY_PASSWORD 选项为客户端指定标识文件和口令。数据库服务器指定用于签署客户端标识文件的受信任证书。

    使用 CONNECTION_PROPERTY 系统函数检索当前连接的加密设置:

    SELECT CONNECTION_PROPERTY ( 'Encryption' );

    示例

    以下连接字符串片段使用传送层安全(RSA 加密)和指定的证书文件(即使已过期)连接到数据库服务器:

    "HOST=myhost;SERVER=myserver;ENCRYPTION=TLS(FIPS=OFF;TRUSTED_CERTIFICATE=rsaroot.crt)"

    以下连接字符串片段使用简单模糊处理连接到数据库服务器:

    "HOST=myhost;SERVER=myserver;ENCRYPTION=simple"

    以下两个连接字符串片段是等效的,它们使用传送层安全(RSA 加密)和操作系统证书存储库中的证书连接到数据库服务器:

    "HOST=myhost;SERVER=myserver;ENCRYPTION=TLS(FIPS=OFF;TRUSTED_CERTIFICATE=*)"
    "HOST=myhost;SERVER=myserver;ENCRYPTION=TLS"

    以下连接字符串片段验证 myrootcert.crt 是否位于数据库服务器证书的签名链的根部,以及证书的公用名字段是否设置为 MyCertificateName:

    "HOST=myhost;SERVER=myserver;ENCRYPTION=TLS(TRUSTED_CERTIFICATE=myrootcert.crt;CERTIFICATE_NAME=MyCertificateName)"

    以下连接字符串片段验证 myrootcert.crt 是否位于数据库服务器的证书签名链的根部。由于未指定其它 TLS 证书选项,因此数据库服务器证书中的主机名必须与要连接到的主机名相匹配:

    "HOST=myhost;SERVER=myserver;ENCRYPTION=TLS(TRUSTED_CERTIFICATE=myrootcert.crt)"

    以下连接字符串片段验证 myrootcert.crt 是否位于数据库服务器证书的签名链的根部,但不进行其它验证:

    "HOST=myhost;SERVER=myserver;ENCRYPTION=TLS(TRUSTED_CERTIFICATE=myrootcert.crt;SKIP_CERTIFICATE_NAME_CHECK=ON)"

    以下连接字符串片段将最低 TLS 版本强制设置为 1.3 以避免弱 TLS 1.0、1.1 和 1.2:

    "HOST=myhost;SERVER=myserver;ENCRYPTION=TLS(MIN_TLS_VERSION=1.3)"