繁体   English   中英

从SSLContext提取证书

[英]Extract certificate from SSLContext

我以标准方式创建SSLContext:

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

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

甚至有可能还是我必须单独获取它,从文件中读取证书?

如果您有一个自定义的TrustManager,则可以完成。 您可以为该自定义类引用此链接 查找私有的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM