SSL 身份验证
从 v3.4.1 版本开始,StarRocks 支持由 SSL 加密的安全连接。 与传统的到 DBMS 的明文连接不同,SSL 连接提供端点验证和数据加密,以确保客户端和 StarRocks 之间传输的数据不会被未经授权的用户读取。
启用 SSL 认证
配置 FE 节点
要在 StarRocks 中启用 SSL 认证,请在 FE 配置文件 fe.conf 中配置以下参数
ssl_keystore_location
:指定存储 SSL 证书和密钥的密钥库文件的路径。ssl_keystore_password
:用于访问密钥库文件的密码。 StarRocks 需要此密码才能读取密钥库文件。ssl_key_password
:用于访问密钥的密码。 StarRocks 需要此密码才能从密钥库中检索密钥。
示例
ssl_keystore_location = // Path to the keystore file
ssl_keystore_password = // Password for the keystore file
ssl_key_password = // Password for accessing the key
生成 SSL 证书
在生产环境中,建议使用证书颁发机构提供的证书。
在开发环境中,您可以生成自定义 SSL 证书。 使用以下命令生成 SSL 证书
keytool -genkeypair -alias starrocks \
-keypass <ssl_key_password> \
-keyalg RSA -keysize 1024 -validity 365 \
-keystore <ssl_keystore_location> \
-storepass <ssl_keystore_password>
参数
-keypass
:密钥密码,对应于 fe.conf 中的ssl_key_password
。-storepass
:密钥库文件密码,对应于 fe.conf 中的ssl_keystore_password
。-keystore
:密钥库文件的存储路径,对应于 fe.conf 中的ssl_keystore_location
。
在客户端启用 SSL
StarRocks 兼容 MySQL 协议。 对于 MySQL 客户端,默认启用 SSL 认证。
对于 JDBC 连接,添加以下选项
useSSL=true
verifyServerCertificate=false
禁用 SSL 认证
要禁用 SSL 认证,请按照以下步骤操作
- MySQL 客户端:添加选项
--ssl-mode=DISABLED
。 - JDBC:删除
useSSL=true
和verifyServerCertificate=false
。
LDAP 认证
有关启用 LDAP 认证的详细说明,请参阅认证方法。
对于 JDBC 连接,由于 StarRocks 支持 SSL 认证,因此您无需自定义 AuthPlugin
。 您可以使用内置的 MysqlClearPasswordPlugin
。
-
当使用 JDBC 5 和 LDAP 认证时,请配置以下设置
authenticationPlugins: com.mysql.jdbc.authentication.MysqlClearPasswordPlugin
defaultAuthenticationPlugin: com.mysql.jdbc.authentication.MysqlClearPasswordPlugin
disabledAuthenticationPlugins: com.mysql.jdbc.authentication.MysqlNativePasswordPlugin -
当使用 JDBC 8 和 LDAP 认证时,请配置以下设置
authenticationPlugins: com.mysql.cj.protocol.a.authentication.MysqlClearPasswordPlugin
defaultAuthenticationPlugin: com.mysql.cj.protocol.a.authentication.MysqlClearPasswordPlugin
disabledAuthenticationPlugins: com.mysql.cj.protocol.a.authentication.MysqlNativePasswordPlugin
常见问题
Q1: 当我使用 DBeaver 连接到 StarRocks 时,返回错误“Unable to load authentication plugin 'mysql_native_password'”。
A:您需要将 JDBC 5 升级到 5.1.46 或更高版本。