gpt4 book ai didi

java - 从 SSLContext 中提取证书

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:37 28 4
gpt4 key购买 nike

我正在以标准方式创建 SSLContext:

  • 获取.p12证书文件,
  • 创建 keystore 并将证书加载到其中,
  • 创建 KeyManagerFactory,使用 KeyStore 初始化它,并获取 KeyManagers,
  • 创建 TrustManagerFactory,用 null 初始化它,并获取 TrustManagers。
  • 创建 SSLContext 并使用 KeyManagers 和 TrustManagers 对其进行初始化。

问题是——如何从 SSLContext 中提取 KeyStore 和证书数据?任务是从证书中获取指纹哈希。

是否有可能,或者我必须单独获取它,从文件中读取证书?

最佳答案

如果您有自定义的 TrustManager,就可以做到。可以引用这个link对于那个自定义类。查找私有(private) SavingTrustManager 静态类。

在您使用 java 的默认 TrustManager 的地方,使用此类以便您可以检索服务器发送的证书。

SSLContext context = SSLContext.getInstance("TLS");
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(dummyTrustStore);

X509TrustManager defaultTrustManager = (X509TrustManager) tmf.getTrustManagers()[0];

SavingTrustManager savingTrustManager = new SavingTrustManager(defaultTrustManager);
context.init(null, new TrustManager[] { savingTrustManager }, null);
SSLSocketFactory factory = context.getSocketFactory();

并且在你开始握手之后,你可以从静态成员变量 chain 中的 SavingTrustManager 获取证书,比如:

savingTrustManager.chain

关于java - 从 SSLContext 中提取证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40530117/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com