Flink CDC MySQL 报错 No appropriate protocol
Flink 版本: 1.14
SSL 连接问题
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at sun.security.ssl.Handshaker.activate(Handshaker.java:529)
at sun.security.ssl.SSLSocketImpl.kickstartHandshake(SSLSocketImpl.java:1492)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1361)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
产生问题的原因
因为 SSLv1-SSLv3 都有漏洞, JDK8 小版本号高的版本以及之后的 JDK 将他们都禁用了。
解决方法
有两种解决方法
方法一: 更改 JDK 参数解除禁用
在 JAVA_HOME/jre/lib/security/java.security 文件中找到 jdk.tls.disabledAlgorithns, 将 TLSv1 和 TLSv1.1 都添加上。
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, DH keySize < 1024, \
EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
include jdk.disabled.namedCurves
然后重启应用。
方法二: 在 JDBC 连接串中加入 useSSL=false
由于 cdc 还不支持配置参数所以自己进行了实现, 之后相应把这个 fix 推到社区的时候发现 2 分钟前有人 take 了这个 issue. 2 分钟啊...
我们的实现基本上一样, 就是加一个 Properties 保存默认配置, 然后给用户提供配置可以添加 url 参数, 这些参数也放到这个 Properties 中, 然后通过字符串拼接生成 url.