[英]SSL connection using slick and hikariCP
我正在尝试使用 Slick 和 HikariCP 设置 SSL 加密。 这是conf:
mysqldb = {
dataSourceClass = "com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
initializationFailFast = false
properties {
user = "ssl_user"
password = "root"
databaseName = "ssl_db"
serverName = "localhost"
useUnicode = true
characterEncoding = UTF-8
useSSL="true"
javax.net.ssl.trustStore="/home/ec2-user/rds-combined-ca-bundle.pem"
javax.net.ssl.trustStorePassword=""
}
connectionTimeout = 10000
numThreads = 10
maxConnections = 10
minConnections = 4
queueSize =10000
}
创建连接的代码:
import slick.jdbc.MySQLProfile.api._
val connectionPool = Database.forConfig(s"mysqldb")
val session = connectionPool.createSession()
但是,它抛出错误:
Exception in thread "main" java.lang.RuntimeException: Property javax does not exist on target class com.mysql.jdbc.jdbc2.optional.MysqlDataSource
at com.zaxxer.hikari.util.PropertyElf.setProperty(PropertyElf.java:131)
at com.zaxxer.hikari.util.PropertyElf.lambda$setTargetFromProperties$0(PropertyElf.java:57)
at java.util.Hashtable.forEach(Hashtable.java:879)
at com.zaxxer.hikari.util.PropertyElf.setTargetFromProperties(PropertyElf.java:52)
at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:333)
at com.zaxxer.hikari.pool.PoolBase.<init>(PoolBase.java:109)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:108)
at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81)
at slick.jdbc.hikaricp.HikariCPJdbcDataSource$.forConfig(HikariCPJdbcDataSource.scala:92)
at slick.jdbc.hikaricp.HikariCPJdbcDataSource$.forConfig(HikariCPJdbcDataSource.scala:21)
at slick.jdbc.JdbcDataSource$.forConfig(JdbcDataSource.scala:47)
at slick.jdbc.JdbcBackend$DatabaseFactoryDef.forConfig(JdbcBackend.scala:341)
at slick.jdbc.JdbcBackend$DatabaseFactoryDef.forConfig$(JdbcBackend.scala:337)
at slick.jdbc.JdbcBackend$$anon$1.forConfig(JdbcBackend.scala:32)
at com.techmonad.SSLConnection$.delayedEndpoint$com$techmonad$SSLConnection$1(SSLConnection.scala:7)
at com.techmonad.SSLConnection$delayedInit$body.apply(SSLConnection.scala:3)
at scala.Function0.apply$mcV$sp(Function0.scala:39)
at scala.Function0.apply$mcV$sp$(Function0.scala:39)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
at scala.App.$anonfun$main$1(App.scala:73)
at scala.App.$anonfun$main$1$adapted(App.scala:73)
at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:553)
at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:551)
at scala.collection.AbstractIterable.foreach(Iterable.scala:921)
at scala.App.main(App.scala:73)
at scala.App.main$(App.scala:71)
任何帮助,将不胜感激。
sslMode
是不支持的配置属性com.mysql.jdbc.jdbc2.optional.MysqlDataSource
。 根据文档,它确实支持useSSL=true/false
。 默认情况下,对于 MySQL 5.6.26+ 或 5.7.6+,这设置为 true,否则为 false。
您可以在此处找到所有与安全相关的配置参数: https : //dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html 。
如果您对验证 MySQL 服务器的证书感兴趣,请查看verifyServerCertificate
属性的说明。
还有一个页面详细介绍了如何使用 jdbc2 驱动程序设置到 MySQL 的安全连接: https ://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-using-ssl.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.