簡體   English   中英

使用 slick 和 hikariCP 的 SSL 連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM