【发布时间】:2015-02-08 16:10:04
【问题描述】:
我想将 http 请求发布到具有给定 ca 证书的安全服务器。
我使用的是 Spray 1.3.1,代码如下所示:
val is = this.getClass().getResourceAsStream("/cacert.crt")
val cf: CertificateFactory = CertificateFactory.getInstance("X.509")
val caCert: X509Certificate = cf.generateCertificate(is).asInstanceOf[X509Certificate];
val tmf: TrustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
val ks: KeyStore = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null);
ks.setCertificateEntry("caCert", caCert);
tmf.init(ks);
implicit val sslContext: SSLContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
implicit val timeout: Timeout = Timeout(15.seconds)
import spray.httpx.RequestBuilding._
val respFuture = (IO(Http) ? Post( uri=Uri(url), content="my content")).mapTo[HttpResponse]
问题是定义的隐式 SSLContext 没有被采用,我在运行时得到:“无法找到请求目标的有效证书路径”。
我如何定义一个 SSLContext 以与喷雾客户端一起使用?
【问题讨论】:
标签: ssl https spray spray-client