Java:从 keystore 文件确定 keystore 的类型

标签 java security ssl https keystore

所以我有一个应用程序,允许用户使用 HTTPS 配置服务器。服务器使用 Undertow。要向 Undertow 添加 HTTPS 处理程序,我需要调用 Keystore.getInstance("JKS") 函数,该函数返回基于提供程序的实现。 Java native 仅支持 3 个提供程序(JKS、PKCS12 和 JCEKS),但据我了解,您可以添加自己的 keystore 实现提供程序。

所以我的问题是,仅给定 keystore 文件,是否可以确定它是什么类型的 keystore ?我不能依赖文件扩展名,因为 PKCS12 keystore 也可以存储在 .p12 文件扩展名中。是否可以通过编程方式获取此值,以便我可以将其传递给 Keystore.getInstance(),或者我是否必须只接受用户的输入?

最佳答案

目前在 WildFly 中,使用 Elytron 项目正在开发这样的功能。你可以看看[1]。

一些 keystore 可以通过格式模式来区分。但我认为在您的情况下,最简单的方法是尝试一个接一个地加载 Keystore.getInstance("PKCS12")、Keystore.getInstance("JKS")、Keystore.getInstance("JCEKS") 并查看哪个通过。

此外,我认为用户可以提供 keystore 类型。

[1] https://issues.jboss.org/browse/WFCORE-4058

关于Java:从 keystore 文件确定 keystore 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53699040/

相关文章:

php - 如何限制对 phpmyadmin 的访问?

java - Java中如何获取 key 交换和认证协议(protocol)

ssl - 在 EAP-TTLS Freeradius 中使用证书时出现错误 "handshake failure"

java - 为什么在 Java 中 GC 时 MySQL 的PreparedStatements 不会自动关闭?

javascript - 有没有办法在用户按下 "print screen"按钮时隐藏图片?

java - 不同项目BOM显示不同

ruby - 在 ruby 中有点敲打

ssl - Netty中如何处理SSL握手失败

java - 需要 java.util.ArrayList<String>,找到 java.lang.Object : I do not understand the reason for this error

java - 错误的类格式将包从 Java 7 构建到 Java 8