Posted at

LibertyからMySQL接続時にSSL証明書未使用のエラーを解消する


エラー内容

IBM WebSphere Application Server Liberty (以下 Liberty) から MySQL へ Connection 確立時に SSL にしてねと言われます。

[err] Fri Apr 19 22:30:57 UTC 2019 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.

MySQL の Documentation を見ると、JDBC ドライバーのバージョンが 8.0.13 以降では、 useSSL=true のプロパティとなっているようです。

動作環境で使用したバージョンは 8.0.12 なのでエラーは出ないのでは? となりましたが、SSL 接続しない場合はそれを明示する必要があるようです。


Liberty で SSL 接続しないことを明示する

Liberty で明示する場合は、server.xml に記載します。

Knowledge Center には記載方法がないですが、MySQL 用の<dataSource> <properties> へ記載します。


server.xml

  <library id="MySQLLib">

<fileset dir="${server.config.dir}/resources/mysql" includes="*.jar" />
</library>
<dataSource jndiName="jdbc/sample" transactional="false">
<jdbcDriver libraryRef="MySQLLib" />
<properties databaseName="sample" serverName="${env.MYSQL_SERVERNAME}" portNumber="${env.MYSQL_PORTNUMBER}" user="${env.MYSQL_USER}" password="${env.MYSQL_PASSWORD}" useSSL="false" />
</dataSource>

Liberty のプロセスを再起動すれとエラーは出なくなります。