加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – Play Framework:如何使用给定的证书进行HTTP WS.url调

发布时间:2020-12-16 08:43:12 所属栏目:安全 来源:网络整理
导读:我有来自REST服务提供商的证书,我需要告诉给定的HTTP get调用,以便在联系给定的提供者时使用它.我正在使用的代码库曾经使用第三方库来实现这一目标,但我想利用WS.url调用的超时功能和细节. 我已经看过网站上的API文档和文档,我只发现了一些线索,这些线索到目
我有来自REST服务提供商的证书,我需要告诉给定的HTTP get调用,以便在联系给定的提供者时使用它.我正在使用的代码库曾经使用第三方库来实现这一目标,但我想利用WS.url调用的超时功能和细节.

我已经看过网站上的API文档和文档,我只发现了一些线索,这些线索到目前为止还没有引出任何解决方案.

解决方法

您应该能够通过调整AsyncHttpClient的SSLContext来接近它.
我们的想法是为客户端证书提供底层客户端.我假设你有一个pkcs12飞来飞去.

看起来AsyncHttpClientConfig无法更新,因为它是自动初始化的.因此,应该实例化并使用新客户端.

以下内容应使用包含pkcs12文件的SSLContext发出请求.

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory
            .getDefaultAlgorithm());
    KeyStore clientCert = KeyStore.getInstance("pkcs12");
    InputStream is = new FileInputStream("/conf/brazo.p12");

    clientCert.load(is,"brazo".toCharArray());
    kmf.init(clientCert,"brazo".toCharArray());

    SSLContext sc = SSLContext.getInstance("TLSv1");
    sc.init(kmf.getKeyManagers(),null,new SecureRandom());
    AsyncHttpClientConfig config = new AsyncHttpClientConfig.Builder().setSSLContext(sc).build();
    AsyncHttpClient client = new AsyncHttpClient(config);

    String url = "https://your-url";
    Request req = new RequestBuilder().setUrl(url).setMethod("GET").build();
    client.executeRequest(req);

可悲的是,这远离Play!标准WS库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读