2

我正在尝试使用 2way SSL 运行 Java 客户端,它使用 CAC 卡作为客户端的密钥库。我在我的客户端程序中添加了以下系统属性以使其工作,并更改了java.security文件以添加pcks11提供程序。

System.setProperty("javax.net.ssl.keyStoreType", "pkcs11");
System.setProperty("javax.net.debug", "ssl");

程序运行良好,握手成功。但是,当我在 CAC 卡中有多个受信任证书时,它会采用默认证书。我想指定应该使用哪个证书来执行客户端身份验证(可能通过指定别名),但我没有找到任何系统属性来执行此操作。

如何将别名指定为系统属性,以便 2way SSL 将其用于客户端身份验证?

是否有另一种方法来指定别名?例如,当我从任何浏览器访问服务器 URL 时,我会收到证书选择提示,并使用所选证书建立连接。

4

2 回答 2

0

由于 java ssl 属性中没有特定属性,因此最好搜索支持此功能的不同的现有密钥管理器实现,或者编写您自己的自定义密钥管理器,以便您可以选择具有别名的特定证书。

谢谢,桑尼。

于 2011-03-09T04:28:34.947 回答
0

为了选择客户端证书,默认实现(sun.security.ssl.X509KeyManagerImpl,假设您使用的是 Sun JRE)选择它可以用于请求的第一个证书。

PKCS#11 是一个稍微具体的案例。据我所知,每个插槽只有一个私钥 + 证书链。如果您的 PKCS#11 提供程序配置中未指定任何插槽,则默认值为 0。

于 2010-07-14T08:26:24.487 回答