【问题标题】:Creating a TLS1.2 connection to http server in Java在 Java 中创建到 http 服务器的 TLS1.2 连接
【发布时间】:2017-04-16 20:01:36
【问题描述】:

作为客户端,我想在 Java 中创建到 URL(SOAP 端点)的 TLS1.2 连接。

我已获得一个 PFX 文件和该文件的密码。

我不确定是否需要将 PFX 文件导入信任库或密钥库以及如何执行此操作?

创建连接的代码是什么样的?

这个问题类似,但没有解决如何将 pfx 文件放入 java 密钥系统:

Java HttpsURLConnection and TLS 1.2

我确实成功地跑了:

keytool -importkeystore -srckeystore client.pfx -srcstorestype pkcs12 
-destkeystore clientcert.jks -deststoretype jks

已经制作了clientcert.jks

最终我将与服务器进行双向 TLS,但作为起点,回答这些问题会有所帮助。

我也有服务器证书。

【问题讨论】:

  • 所以你已经准备好你的密钥库了。我不清楚为什么您从 PKCS#12 转换为 Java 密钥存储类型(Java 无论如何都倾向于使用 PKCS#12 作为默认值)。现在你必须设置你的信任库,除非服务器证书已经被信任,因为它是由现有的受信任的 CA 颁发的。所以去配置你的连接吧。
  • 所以我将服务器证书添加到信任库?客户端证书的代码是什么样的?
  • 我已经设法将 pfx 中的公共证书添加到 cacerts 文件中,答案如下:stackoverflow.com/questions/15964797/… 现在我需要一个代码 sn-p 来向我展示如何使用 URLConnection 和这个证书进行连接到网址。我假设我还需要从网站下载公钥文件才能在网站上使用 mtls。
  • 您可以直接使用 PKCS#12 作为KeyStore 实例,通过加载它,这是使用您的证书和私钥来验证您自己。您还需要一个信任库(也是一个KeyStore 实例)才能验证服务器的证书。同一个KeyStore 实例可以充当密钥库和信任库的角色,但也可以使用单独的实例。然后,使用两个商店配置 JSSE 实现并启用客户端身份验证成为一个问题。然而,互联网上应该有很多例子可以做到这一点。

标签: java ssl


【解决方案1】:

如果您没有加载密钥库,可以查看此article,它描述了如何在 URL 连接上设置 SSL 上下文。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    相关资源
    最近更新 更多