ssl双向证书 原理_具有Scalatest的双向SSL(客户端证书)

ssl双向证书 原理

在工作中,我们最近添加了使用客户端证书(双向ssl)对机器对机器通信进行身份验证的选项。 尽管这相对容易设置,并且可以通过不同的编程语言进行编程访问,但在集成测试的启动和运行方面遇到了一些困难。 我们希望进行一些测试,以确保正确解析了证书中的信息并将其映射到内部客户端ID,以及系统如何对无效证书和其他一些边缘情况做出React。

由于我们将Scalatest用于所有集成测试,因此我们只想将私有密钥库和信任库添加到scalatest并完成它。 但是,Scalatest提供的标准fluent API没有提供它(或者我们找不到)。 经过一番环顾之后,我们来到了以下设置,该设置适用于我们的集成测试套件:

import java.io.{File, FileInputStream}
import java.security.KeyStore

import com.jayway.restassured.RestAssured
import com.jayway.restassured.config.SSLConfig
import com.jayway.restassured.http.ContentType
import com.jayway.restassured.response.Response
import org.apache.http.conn.ssl.{SSLConnectionSocketFactory, SSLSocketFactory}
import org.scalatest._

object SSLTest {

  def doSSLTest() = {

    // load the corresponding keystores
    val privateKeyStoreLocation = new FileInputStream(new File("src/test/resources/keystores/testing-client.p12"));
    val keyStore = KeyStore.getInstance("PKCS12");
    keyStore.load(privateKeyStoreLocation, "secret".toCharArray());

    val certKeyStoreLocation = new FileInputStream(new File("src/test/resources/keystores/ca-chain.cert.jks"));
    val trustStore = KeyStore.getInstance("jks");
    trustStore.load(certKeyStoreLocation, "secret".toCharArray());

    // manually create a new sockerfactory and pass in the required values
    val clientAuthFactory = new org.apache.http.conn.ssl.SSLSocketFactory(keyStore, "secret", trustStore);
    // don't check on hostname
    clientAuthFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

    // set the config in rest assured
    val config = new SSLConfig().`with`().sslSocketFactory(clientAuthFactory).and().allowAllHostnames();
    RestAssured.config = RestAssured.config().sslConfig(config);

    RestAssured
      .given.contentType(ContentType.JSON)
      .when
      .request
      .post("https://theurl")
  }



}

请注意,其中某些类实际上已被弃用,并且可以用此处使用的apache commons库中的其他相关类替换。

翻译自: https://www.javacodegeeks.com/2015/11/two-way-ssl-client-certificates-with-scalatest.html

ssl双向证书 原理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值