从私钥和cer文件创建SSLContext

时间:2017-05-11 16:56:25

标签: java ssl pem cer

我有两个文件: mycer.cer mykey.key

我需要使用java创建SslContext以通过SSL连接到另一台服务器。 我试图找出如何直接从这些文件创建SslContext对象。

这篇文章可能会重复,但我试图找到一个明确的解释,用一个例子来创建SslContext,但没有找到清楚的东西。

提前致谢

2 个答案:

答案 0 :(得分:1)

获取p12格式的证书,据我所知你不能使用证书文件,有实用程序(如openssl)的源(从你生成下载证书的地方)可以给你一个p12格式。

openssl pkcs12 -export -in mycer.crt -inkey mykey.key -out mycer.p12 -name "mycer"

然后检查以下网址..它应该包含您想要的信息。

Java HTTPS client certificate authentication

希望它有所帮助!

答案 1 :(得分:0)

此问题已在此处回答:In Java, what is the simplest way to create an SSLContext with just a PEM file?

我为此用例创建了一个库,以简化配置。它在掩体下使用充气城堡。用法请参见下文:

app.get('/', (req, res) => {
  db.post.findAll()
  .then((posts) => {
    const postArray = posts.map(post => {
      return post.get();
    })
    // I am assuming you need only one and the first post instance contains that image URL
    res.render('index', { image: postArray[0].image_url });
  })
});

要使用上述设置,您可以使用以下库:

X509ExtendedKeyManager keyManager = PemUtils.loadIdentityMaterial("certificate-chain.cer", "mykey.key");
X509ExtendedTrustManager trustManager = PemUtils.loadTrustMaterial("mycer.cer");

SSLFactory sslFactory = SSLFactory.builder()
          .withIdentityMaterial(keyManager)
          .withTrustMaterial(trustManager)
          .build();

SSLContext sslContext = sslFactory.getSslContext();