首页 > 解决方案 > Java:从密钥库文件中确定密钥库的类型

问题描述

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

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

标签: javasecuritysslhttpskeystore

解决方案


目前在 WildFly 中,使用 Elytron 项目的此类功能正在进行中。你可以看看[1]。

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

另外我认为用户可以提供密钥库类型。

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


推荐阅读