【发布时间】:2019-05-10 23:05:12
【问题描述】:
所以我有一个应用程序,允许用户使用 HTTPS 配置服务器。服务器使用 Undertow。要将 HTTPS 处理程序添加到 Undertow,我需要调用 Keystore.getInstance("JKS") 函数,该函数返回基于提供程序的实现。 Java 原生只支持 3 个提供程序(JKS、PKCS12 和 JCEKS),但据我了解,您可以添加自己的密钥库实现提供程序。
所以我的问题是,仅给定密钥库文件,是否可以确定它是什么类型的密钥库?我不能依赖文件扩展名,因为 PKCS12 密钥库也可以存储在 .p12 文件扩展名中。是否可以通过编程方式获取此值,以便将其传递给 Keystore.getInstance() 还是只需要从用户那里获取该输入?
【问题讨论】:
-
Keystore.getInstance("JKS") function which returns the implementation based on the provider:不,它没有。它返回 JKS 类型的 KeyStore。如果这是您需要进行的方法调用,那么您没有问题。如果确实有问题,则需要将参数设为变量。我不会担心用户提供自己的提供商。 -
@user207421 我的意思是作为一个例子。我要么必须从文件中找出密钥库的类型并调用 getInstance 方法,要么将其作为输入公开给用户。最好是第一个。
-
究竟是什么例子?一般来说,你不能做第一个,对吗?您只需要尝试所有已知的提供商,或者让用户告诉您。
标签: java security ssl https keystore