用于初始化与MySQL服务器的连接的默认值在最近已更改,并且(通过快速查看堆栈溢出时最流行的问题和答案)新值引起了很多混乱。更糟糕的是,标准建议似乎是完全禁用SSL,这在制造过程中有点麻烦。
现在,如果您的连接确实没有暴露给网络(仅适用于本地主机),或者您正在没有真实数据的非生产环境中工作,那么请确保:通过包含option禁用SSL不会有任何危害useSSL=false。
对于其他所有人,需要以下选项集才能使SSL与证书和主机验证一起使用:
useSSL = true
sslMode = VERIFY_IDENTITY
trustCertificateKeyStoreUrl =文件:路径_密钥库
trustCertificateKeyStorePassword =密码
另外,看到您已经在使用这些选项,禁用弱SSL协议也很简单:
enabledTLSProtocols = TLSv1.2
例
因此,作为一个有效的示例,您需要遵循以下主要步骤:
首先,请确保您已为MySQL服务器主机生成了有效的证书,并且已将CA证书安装在客户端主机上(如果使用的是自签名,则可能需要手动执行此操作,但对于流行的公共CA,它将已经存在)。
接下来,确保Java密钥库包含所有CA证书。在Debian / Ubuntu上,可以通过运行以下命令来实现:
update-ca-certificates-f
chmod644/etc/ssl/certs/java/cacerts
最后,更新连接字符串以包括所有必需的选项,这在Debian / Ubuntu上将有点像(根据需要进行调整):
jdbc:mysql://{mysql_server}/confluence?useSSL=true&sslMode=VERIFY_IDENTITY&trustCertificateKeyStoreUrl=file%3A%2Fetc%2Fssl%2Fcerts%2Fjava%2Fcacerts&trustCertificateKeyStorePassword=changeit&enabledTLSProtocols=TLSv1.2&useUnicode=true&characterEncoding=utf8