我试图使用双向SSL运行Java客户端,它使用CAC卡作为客户端的密钥存储库。我在客户端程序中添加了以下系统属性以使其工作,并将java.security文件更改为添加pcks11提供程序。
System.setProperty("javax.net.ssl.keyStoreType", "pkcs11");
System.setProperty("javax.net.debug", "ssl");该程序运行良好,握手成功。但是,当CAC卡中有多个可信证书时,它将接受默认证书。我希望指定应该使用哪个证书来执行客户端auth (可能通过指定别名),但我没有找到任何系统属性。
如何将别名指定为系统属性,以便2way SSL将其用于客户端auth?
还有其他方法来指定别名吗?例如,当我从任何浏览器访问服务器URL时,我将得到一个证书选择提示符,并且使用所选证书建立连接。
发布于 2010-07-14 08:26:24
对于选择客户端证书,默认实现(sun.security.ssl.X509KeyManagerImpl,假设您正在使用Sun )选择它可以用于请求的第一个证书。
PKCS#11是一个稍微特殊的例子。据我所知,每个时隙只会有一个私钥+证书链。如果您的PKCS#11提供程序配置中没有指定插槽,则默认的插槽为0。
发布于 2011-03-09 04:28:34
由于java属性中没有特定的属性,所以最好搜索另一个现有的密钥管理器实现,该实现支持此实现,否则编写您自己的自定义密钥管理器,以便您可以使用它的别名来选择特定的证书。
谢谢桑尼。
https://stackoverflow.com/questions/3244217
复制相似问题