Java 帮助快速启动NSS

Java 帮助快速启动NSS,java,security,mozilla,nss,Java,Security,Mozilla,Nss,我开始进入NSS,我设法建立了它。结果被放置在名为dist的文件夹中,并且有多个子文件夹,其中包含多个exe的DLL等 dist /WINNT6.0_DBG.OBJ /bin /include /lib 我正在尝试,但我不确定什么是nssLibraryDirectory和nssSecmodDirectory 对于nssLibraryDirectory我是否应该将dist中的所有内容复制到一个文件中,并从nssL

我开始进入NSS,我设法建立了它。结果被放置在名为
dist
的文件夹中,并且有多个子文件夹,其中包含多个exe的DLL等

dist  
    /WINNT6.0_DBG.OBJ  
         /bin  
         /include  
         /lib   
我正在尝试,但我不确定什么是
nssLibraryDirectory
nssSecmodDirectory

对于
nssLibraryDirectory
我是否应该将
dist
中的所有内容复制到一个文件中,并从
nssLibraryDirectory
中引用它?那NSSSECMODD目录呢?我不确定应该如何配置以开始使用sun的pkcs11

例如,这个琐碎的问题:

String configName = "nss.cfg";
Provider p = new sun.security.pkcs11.SunPKCS11(configName );
其中nss.cfg是:

 name = NSS  
 nssLibraryDirectory = E:\NSS\nss-3.12.4-with-nspr-4.8\mozilla\dist\WINNT6.0_DBG.OBJ\lib 
 nssDbMode = noDb  
破例

原因:java.io.IOException:异常 找不到指定的模块。 在 sun.security.pkcs11.Secmod.nssloaddlibrary(本机) (方法)


nssLibraryDirectory应仅包含lib子目录。
它还必须出现在PATH中——要么修改环境变量,要么在JVM参数中指定它。

我努力尝试的一些注意事项。。。。我认为它会帮助任何想使用NSS的人

我倾向于在Java代码中构造一个
字符串
,以了解错误发生在哪一行。我必须说它更好,因为Eclipse可以消除所有字符串构造错误。然后注意要填写的值

我使用以下代码:

String config = "xxxxxxx" +
                "xxxxxxx" +
                "xxxxxxx" +
                "\n";
provider = new SunPKCS11(new ByteArrayInputStream(config.getBytes()));
Security.insertProviderAt(provider, 1);
提供程序配置的所有标志: (来源:, 看起来像openjdk 8
sun.security.pkcs11.Config.java

nssArgs=
示例:(用空格分隔)

Java代码中转义的一些示例:

String config = "name=\"NSS Module\"\n" +
                "......" +
                "\n";
如果带空格,则必须用
引用<代码>'无法使用。每个
都必须使用
\
进行转义

现在,一些真实的例子

要通过NSS使用Firefox安全模块:

String config = "name=\"NSS Module\"\n"
+ "attributes=compatibility\n"
+ "showInfo=true\n"
+ "allowSingleThreadedModules=true\n"
+ "nssLibraryDirectory=" + NSS_JSS_Utils.NSS_LIB_DIR + "\n"
+ "nssUseSecmod=true\n"
+ "nssSecmodDirectory=" + NSS_JSS_Utils.getFireFoxProfilePath();
使用
libsoftokn3.so
(我不知道它是用来做什么的,但我看到有人在
nssArgs
中这样使用它):

NSS_JSS_Utils.NSS_LIB_DIR
返回所有NSS库LIB所在的目录。有时默认情况下会安装它们(例如,在my RedHat 7.2中),但有时必须手动安装

NSS\u JSS\u Utils.getFireFoxProfilePath()
返回您的FireFox配置文件的位置。如果您使用NSS/NSPR附带的
modutil
,您可以看到您安装的安全模块存储在此文件夹中的
secmod.db
中。如果找不到它们,您可能使用了错误的文件

有关如何填充这些值的详细信息:


为什么标题为“jss”和内容为“NSS”?您是否尝试过“make dist”或其等效版本?您是否在Oracle网站上查看过此页面?@Jonathan:Network Security Services for Java(我构建了dist。现在我不知道如何配置pkcs11。如果我放置
E:\NSS\NSS-3.12.4-with-nspr-4.8\mozilla\dist\WINNT6.0_DBG.OBJ
I get
nss3.dll文件未找到
exception。如果我放置
E:\NSS\NSS-3.12.4-with-with-nspr-4.8\mozilla\dist\WINNT6.0_DBG.OBJ\code>I get
sun.security.second.slool(本机方法)
异常
String config = "name=\"NSS Module\"\n" +
                "......" +
                "\n";
String config = "name=\"NSS Module\"\n"
+ "attributes=compatibility\n"
+ "showInfo=true\n"
+ "allowSingleThreadedModules=true\n"
+ "nssLibraryDirectory=" + NSS_JSS_Utils.NSS_LIB_DIR + "\n"
+ "nssUseSecmod=true\n"
+ "nssSecmodDirectory=" + NSS_JSS_Utils.getFireFoxProfilePath();
String config = "library=" + NSS_JSS_Utils.NSS_LIB_DIR + "/libsoftokn3.so" + "\n"
    + "name=\"Soft Token\"\n";
    + "slot=2\n"
    + "attributes=compatibility\n"
    + "allowSingleThreadedModules=true\n"
    + "showInfo=true\n"
    + "nssArgs=\"configdir='" + NSS_JSS_Utils.getFireFoxProfilePath() + "' "
                + "certPrefix='' "
                + "keyPrefix='' "
                + "secmod='secmod.db' "
                + "flags='readOnly'\""
    + "\n";