有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Scala playframework WSClient不发送证书

我试图使用Scala Play框架调用HTTPS web api,该api要求我发送特定的客户端证书。我设置了以下JVM参数:

  • -贾瓦克斯。网ssl。信任库=t:/certs/mine/testtest。ts
  • -贾瓦克斯。网ssl。trustStorePassword=testtest
  • -贾瓦克斯。网ssl。keyStore=t:/certs/mine/keyStore。密钥库
  • -贾瓦克斯。网ssl。keystrepassword=testtest

信任库正在工作,但密钥库中的证书不工作。密钥库是从证书+私钥创建的。调查密钥存储库时,会发现存在相应的证书,证书类型为“PrivateKeyEntry”

以下是我的测试代码:

   import scala.concurrent.ExecutionContext.Implicits._

   private val urlLht = <url>

   def main(args: Array[String]): Unit = {
      implicit val system = ActorSystem()
      implicit val materializer = ActorMaterializer()
      val wsClient = AhcWSClient()

      call(wsClient)
         .andThen { case _ => wsClient.close() }
         .andThen { case _ => system.terminate() }
   }

   def call(wsClient: WSClient): Future[Unit] = {
      val requestFuture = wsClient.url(urlLht).get
      requestFuture.recover { case NonFatal(t) => t.printStackTrace; throw t }.map { response =>
         val statusText: String = response.statusText
         println(s"Got a response $statusText")
      }
   }

以下是错误:

java.net.ConnectException: Received fatal alert: bad_certificate

然而,使用openssl一切都很好。像这样:

openssl s_client -showcerts -connect <host> -CAfile <cafile> <clientcertificate>

共 (0) 个答案