我正在尝试在 scala 应用程序中使用 java.security.Keystore
下面是我的代码的样子 -
val ks: KeyStore = KeyStore.getInstance("PKCS12")
val keyManagerFactory: KeyManagerFactory = KeyManagerFactory.getInstance("SunX509")
val tmf: TrustManagerFactory = TrustManagerFactory.getInstance("SunX509")
val sslContext: SSLContext = SSLContext.getInstance("TLS")
case Some(password) =>
val pwdChars: Array[Char] = password.toCharArray
val keystore: InputStream = KEYSTORE match { // for live override dev certificate
case Some(path) =>
new FileInputStream(path)
case None =>
getClass.getClassLoader.getResourceAsStream("myResource")
}
ks.load(keystore, pwdChars)
keyManagerFactory.init(ks, pwdChars)
tmf.init(ks)
sslContext.init(keyManagerFactory.getKeyManagers, tmf.getTrustManagers, new SecureRandom)
Some(ConnectionContext.https(sslContext))
但是当我在我的 mac 上发布这个特定的包并尝试在不同的服务中使用它时,我得到了这个特定的错误 -
[error] java.io.IOException: public key protected PKCS12 not supported
[error] at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1958)
[error] at java.security.KeyStore.load(KeyStore.java:1445)
[error] at com.f1000.baseservice.BaseMicroService$.createHTTPSContext(BaseMicroService.scala:69)
[error] at com.f1000.StaticInfomicroservice.StaticInfoMicroService$.createWebServer(StaticInfoMicroService.scala:36)
[error] at com.f1000.StaticInfomicroservice.StaticInfoMicroService$.$anonfun$main$1(StaticInfoMicroService.scala:61)
[error] at com.f1000.StaticInfomicroservice.StaticInfoMicroService$.$anonfun$main$1$adapted(StaticInfoMicroService.scala:58)
[error] at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
[error] at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
[error] at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
[error] at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
[error] at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
[error] at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
如果我在 mac 机器上发布包,通常会发生此错误,但是当我在 Windows 机器上发布相同的包时,它工作得很好。
您认为这可能是 Mac 特有的吗?