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分钟啊...

github

对应的代码在这:[connector-mysql] Allow user to pass custom JDBC URL parameters used … by paul8263 · Pull Request #921 · ververica/flink-cdc-connectors

我们的实现基本上一样,就是加一个Properties保存默认配置,然后给用户提供配置可以添加url参数,这些参数也放到这个Properties中,然后通过字符串拼接生成url.