Flink CDC里The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]". sqlserver版本太低 不支持 tls1.2 1.3 cdc端应该如何加参数可以忽略这个错误?
在Flink CDC中,如果SQL Server版本太低不支持TLS 1.2或1.3,可以尝试通过添加JVM参数来忽略这个错误。具体操作如下:
打开Flink CDC的配置文件(例如:flink-conf.yaml)。
在配置文件中添加以下JVM参数:
taskmanager.network.netty.tcp.allowed-protocols: TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
这将允许Flink CDC使用TLS 1.0、1.1、1.2和1.3协议进行连接。请注意,这可能会导致安全风险,因为较旧的TLS协议可能不够安全。因此,建议尽量升级SQL Server的版本以支持更高版本的TLS协议。
要解决这个问题,您可以尝试在Flink CDC的配置文件中添加以下参数来忽略TLS 1.2和TLS 1.3协议版本:
sqlserver:
connector:
type: sqlserver-cdc
username: your_username
password: your_password
server-name: your_server_name
database-name: your_database_name
port: your_port
ssl:
enabled: true
cacert: /path/to/your/cacert.pem
client-key: /path/to/your/client-key.pem
client-cert: /path/to/your/client-cert.pem
protocol-versions: TLSv1,TLSv1.1
在这个例子中,我们将protocol-versions
设置为TLSv1
和TLSv1.1
,这将允许客户端接受TLS 1.0和TLS 1.1协议版本。请注意,这可能会导致安全问题,因为较旧的协议版本可能不安全。因此,建议您尽可能使用最新的TLS协议版本。
参考
https://github.com/ververica/flink-cdc-connectors/issues/2991
。此回答来自钉群Flink CDC 社区。
通过报错的日志分析的原因:
Flink CDC(Change Data Capture)无法与 SQL Server 建立安全的 SSL 连接,因为 SQL Server 使用的是较低版本的 TLS(传输层安全协议),而 Flink CDC 客户端的偏好是使用 TLS1.2 或 TLS1.3。
解决方案:
您可以在 Flink CDC 客户端的配置中添加参数来忽略这个错误。但是,请注意,这将降低连接的安全性,因为您将绕过 SSL/TLS 的检查。以下是一个示例参数,可以在 Flink CDC 的连接配置中添加:
java
.option("ssl-handshake-mode", "legacy")
这将会使 Flink CDC 客户端使用旧版的 SSL 握手模式,以兼容较低版本的 TLS。
请注意,使用旧版握手模式可能会带来安全风险,因为它可能使您的应用程序容易受到某些已知的 SSL/TLS 攻击的影响。因此,如果可能的话,最好的解决方案是升级 SQL Server 到支持 TLS1.2 或 TLS1.3 的版本。
希望能够帮助到你
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。