mysql的SSL配置选择

最近MySQL服务器的初始化连接的默认值改了,并且(在快速浏览了stackoverflow的热门问答之后)新的默认值令人困惑。现在,标准答案似乎是禁用SSL,而且这几乎成了一场灾难。

你遇到的典型报错信息大概是这个样子的:

WARN:不建议在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45+, 5.6.26+和5.7.6+的要求,如果没有设置显式选项,默认情况下必须建立SSL连接。为了符合不使用SSL的现有应用程序,verifyServerCertificate属性被设置为“false”。您需要通过设置useSSL=false来显式禁用SSL,或者设置useSSL=true并为服务器证书验证提供信任存储。(这段是有道翻译的标准结果)

WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

假如你的网络不连接公网,或者你在开发环境并且你的数据都是虚拟数据,那当然无所谓,通过配置useSSL=false来禁用SSL就没毛病了。

对有的人来说,以下这些配置在使用SSL、证书、主机验证、禁用弱协议时,就是很有必要的了。

(配置文件)
useSSL=true
sslMode=VERIFY_IDENTITY
trustCertificateKeyStoreUrl=file:path_to_keystore
trustCertificateKeyStorePassword=password
enabledTLSProtocols=TLSv1.2

举个栗子,假如你希望使用SSL连接一个Atlassian产品(Jira, Confluence, Bamboo等等…)(ps.网址是这个,我也是查了才知道是啥)到MySQL服务器,那你就需要遵循以下几步。

首先,确定你的MySQL服务器生成了一个有效的证书,并且这个CA证书已经安装到客户端主机上了(如果你用的是手动签名,那你就得手动做这一步,如果你用的是流行的CA证书,那它就能自动生成到客户端主机上了)

下一步,确定java秘钥仓库包含所有的CA证书,在Debian/Ubuntu 服务器上的话,需要执行下面的命令:
update-ca-certificates -f
chmod 644 /etc/ssl/certs/java/cacerts

最后一步,更新连接Atlassian产品的连接字符串,这个字符串应该包含全部的必填项,在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值