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.