TLS与证书的连接

时间:2020-06-04 04:48:47

标签: scala ssl

我有一个.crt和一个.key文件,我需要将它们用于scala中的TLS连接。 .crt有多个证书。我尝试使用以下方法将crtkey文件合并为jks文件:

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt

对于发送请求,我得到了如下内容:

import java.io.FileInputStream
import java.security.KeyStore
val keyPassphrase = "abc123"

val keyStore = KeyStore.getInstance("PKCS12")
keyStore.load(new FileInputStream("client-truststore.jks"), keyPassphrase.toCharArray)

val blockingPool = Executors.newFixedThreadPool(5)
val blocker = Blocker.liftExecutorService(blockingPool)
implicit val contextShift = IO.contextShift(global)
implicit val timer: Timer[IO] = IO.timer(global)

val sslContext = SSLContexts.custom.loadKeyMaterial(keyStore, "abc123".toCharArray).build


val client = BlazeClientBuilder[IO](global, Some(sslContext)).resource
val x = client.use(_.expect[String]("https://example-tls-url.com"))
x.unsafeRunSync

但是证书不起作用。我确定它们是有效的,因为在python中执行了以下操作:

import requests
requests.get('https://url.com', certs=('cert.crt', 'cert.key'))

工作正常,我得到200分。

0 个答案:

没有答案