簡體   English   中英

從Java訪問Firefox的證書信任庫

[英]Access Firefox's certificate trust store from Java

我幾乎失去了對這個的希望。 我正試圖通過PKCS#11使用Firefox安裝附帶的NSS庫從Java 7訪問Firefox信任庫。

這是代碼:

import java.security.KeyStore;
import java.security.Security;
import java.util.Enumeration;
import sun.security.pkcs11.SunPKCS11;

public class Test {

    public static void main(String[] args) throws Exception {
        String configName = "pkcs11.cfg";
        SunPKCS11 p = new SunPKCS11(configName);
        Security.addProvider(p);
        KeyStore ks = KeyStore.getInstance("PKCS11", p);
        ks.load(null,  "apassword".toCharArray());
        System.out.println("Size: " + ks.size());
        Enumeration<String> aliases = ks.aliases();
        while (aliases.hasMoreElements()) {
            System.out.println(aliases.nextElement());
        }
    }
}

以下是PKCS#11配置的內容:

name = NSS
nssLibraryDirectory = /usr/lib/firefox/
nssSecmodDirectory = "/home/bogdan/.mozilla/firefox/x5d8wol9.default/"
nssModule =trustanchors
showInfo = true

當我運行應用程序時,我還設置了屬性-Djava.library.path=/usr/lib/firefox/

當我運行應用程序時,我得到以下內容:

NSS modules: [NSS Internal PKCS #11 Module (CRYPTO, /usr/lib/firefox/libsoftokn3.so, slot 0), NSS Internal PKCS #11 Module (KEYSTORE, /usr/lib/firefox/libsoftokn3.so, slot 1)]
Exception in thread "main" java.security.ProviderException: NSS module not available: trustanchors
    at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:271)
    at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:103)
    at Test.main(Test.java:11)

您實際上可以看到“trustanchors”模塊未在初始化步驟中加載,但我不知道為什么。 這里的文檔: http//docs.oracle.com/javase/6/docs/technotes/guides/security/p11guide.html#NSS

如果已將secmod.db配置為包含信任錨庫,則trustanchors模塊可通過PKCS11 KeyStore訪問NSS信任錨證書。

但我不知道這意味着什么。 值得注意的是,我對Windows XP 32位和Ubuntu 11.10 64位都有相同的行為。 似乎pkcs11.cfg是正確的,好像我改變了應用程序因其他錯誤而失敗的任何路徑。

有什么好主意嗎?

我已經設法通過使用JSS4 Mozilla庫來解決問題。 如果要使用它,請確保下載JSS4 JAR以及本機庫實現以及它具有的其他依賴項 - NSPR和NSS本機庫。

確保在Linux上,本機庫的位置在LD_LIBRARY_PATH中,在Windows上,它們的位置在%PATH%變量中。 您可能想要使用Firefox發行版附帶的DLL / SO。 這在我發現的Windows上不起作用(與我認為它們是為WIN95平台編譯的事實有關)

其余信息在JSS4庫的文檔中,但您基本上需要使用org.mozilla.jss.CryptoManager類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM