尝试使用代码
读取已安装的证书KeyStore ks = KeyStore.getInstance("Windows-MY")
ks.load(null, null)
Enumeration<String> enumeration = ks.aliases()
while (enumeration.hasMoreElements()) {
String string = (String) enumeration.nextElement()
System.out.println(string)
}
此代码在Windows上列出已安装的证书,但在linux上没有?尝试通过更改密钥库提供程序。
答案 0 :(得分:1)
我不确定你对“阅读浏览器证书”的意思。 您是否尝试从默认Java密钥库中读取证书?你的目标是什么?
KeyStore.getInstance(..)实例化具有特定类型的密钥库(例如,JKS)。如果要从特定密钥库读取,则需要指定密钥库的路径,并使KeyStore实例加载该文件。
有关示例,请参见http://www.java2s.com/Code/Java/Security/RetrievingaKeyPairfromaKeyStore.htm,有关详细信息,请参见https://docs.oracle.com/javase/8/docs/api/java/security/KeyStore.html。
编辑:澄清问题后更新答案。
您可以在以下位置找到有关在Linux中读取浏览器密钥库的更多信息:
答案 1 :(得分:0)
尝试使用NSS的libsoftokn3.so
。
请参阅我的回答here,&#34;方法1&#34;。
关键是找到libsoftokn3.so
的位置,并将其用作libfile来构造配置文件,然后使用KeyStore。
答案 2 :(得分:0)
您可以获得默认类型。 试试下面的代码
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());