我正在以标准的方式创建SSLContext:
问题是-如何从KeyStore中提取SSLContext和证书数据?任务是从证书中获取指纹散列。
这是否可能,或者我必须单独获得它,从文件中读取证书?
发布于 2016-11-10 16:41:06
如果您有一个自定义的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
https://stackoverflow.com/questions/40530117
复制相似问题