问题标签 [nss]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1453 浏览

c++ - 列出来自 CAC 的证书,无需 PIN

我正在开发一个 CAC 身份验证应用程序。

我正在运行 RHEL 5.5 并在我的机器上连接了一个读卡器。当我插入智能卡/CAC 时,在时钟所在窗口的右上角会弹出一个通知,并且可以通过单击图标访问“智能卡管理器”GUI(带有锁定的卡)出现。显示智能卡管理器后,我可以查看卡上的证书列表以及详细信息等,而无需输入密码。

现在,另一方面,在我的 C++ 代码中,当我使用 nss 库获取插槽和列表证书时,我无法在不输入 pin 的情况下获取证书列表。

我想做的是从卡上获取证书列表,并在对话框中将该列表与 pin 文本字段一起呈现给用户,以便用户可以输入 pin,然后选择用于身份验证的证书 ALL IN ONE步骤而不是应用程序必须为 pin 显示单独的对话框,然后为证书选择显示弹出窗口,但似乎使用 nss 库是不可能的,但另一方面,智能卡管理器 gui 可以轻松地做到这一点。谁能指出我是否可以使用单独的 api 从 CAC 获取证书列表的正确方向???谢谢!

0 投票
3 回答
8517 浏览

c - 在 Linux 上验证 X.509 证书

我刚刚开始使用 X.509 证书。谁能告诉我如何在linux上验证证书?用例是我的应用程序在前一个会话中下载了一个证书,我必须在开始新会话之前检查它是否仍然有效(即,自存储以来未过期或撤销)。我知道这里不可能提供完整的示例,但任何指针都会很有用。

编辑:进一步调查揭示了另一个名为网络安全服务 (NSS) 的实用程序。在可用性方面与 OpenSSL 相比如何?此外,我正在寻找编程解决方案,因为我将无法启动命令行实用程序。

0 投票
1 回答
267 浏览

content-management-system - 如何在 NSS 中使用 CMS 强制执行定长编码?

如何在 NSS 中使用 CMS 强制执行定长编码?

我正在尝试让 NSS 的 CMS 编码器使用 DER 进行编码,但是像 mozilla 这样的人显然只担心 BER 编码(据我所知。)我能够使用原始类型获得明确的编码,但所有构造类型都有无限编码。

我目前正在使用的代码(使用 NSS-3.12.7):

任何帮助表示赞赏, Chenz

0 投票
1 回答
2198 浏览

python - 如何为 Mac OS X 构建 python-nss 和 NSS?

我正在尝试在运行 Mac OS 10.6.5 的 64 位 Mac 上构建python-nss ,这是Mozilla NSS 库的 python 接口,用于在 Mac OS X 10.6 或更高版本上运行的 python 软件。使用某些选项,我可以让 NSS 本身成功构建,但是 python-nss 构建给出了几个警告,并且生成的 Python 模块不可用。

为了构建 NSS,我遵循这些说明,但使用这个NSS 源代码,而不是从 cvs 中签出。如果我只是运行make nss_build_all,我会遇到错误:

有问题的行(第 516 行mozilla/security/nss/lib/freebl/drbg.c)是一个特定类型具有预期大小的断言:

如果我编写一个快速测试程序,sizeof(size_t) 似乎是 8,因此可能正在构建 64 位版本,尽管在上述说明页面上是这样:

在 Unix 平台上,除了 Alpha/OSF1,如果您想要为系统的 64 位 ABI 构建,请在您的环境中设置 USE_64=1。默认情况下,NSS 在除 Alpha/OSF1 之外的所有平台上为 32 位环境构建。

添加 gcc 选项-arch i386(针对类似问题建议)没有帮助,但使用 USE_64 环境变量构建是成功的(虽然 64 位构建可能不是我需要的):

这可能很好,但是当我尝试构建 python-nss(使用这个源)时会出现问题。

需要对 python-nss 进行一些修改以setup.py包含刚刚构建的 NSS 库。原始setup.py硬编码每个扩展的包含目录,例如:

所以我通过添加这些行来修改扩展声明:

...并更改每个扩展名以添加 INCLUDE_DIRS 列表并包含一个library_dirs参数(如distutils 文档中所述)。例如:

在这些更改之后,python setup.py build运行并似乎知道 NSS 库,但会产生几个警告,包括:

“文件是为不受支持的文件格式构建的,它不是被链接的体系结构”是最常见的警告。另一个站点上的帖子中提到了此错误,可能的解决方案是将-arch i386选项与 gcc 一起使用。我不确定在构建过程的哪个步骤添加此选项(NSS 或 python-nss?),以及如何将其添加到 python distutils 构建脚本。

构建完成,但生成的 python 模块似乎不可用:

我是如何构建 NSS 还是如何构建 python-nss 的错误?我应该如何告诉 python-nss 构建脚本正确链接到 Mac OS X NSS 库?我的 python 经验比 C 经验多得多,所以如果我犯了一些简单的构建错误,我不会感到惊讶。

我正在运行安装了 Xcode 3.2.4(64 位)的 Mac OS 10.6.5。gcc -v给出gcc version 4.2.1 (Apple Inc. build 5664)Target: i686-apple-darwin10

谢谢。

0 投票
1 回答
1173 浏览

cryptography - OpenSSL/Mozilla NSS RSA 签名和验证(PK11_Sign、PK11_Verify、PK11_VerifyRecover 函数)如何工作?

我有 PEM 格式的 RSA 公钥和私钥(所有 p、q、e、n、d)。我很想知道:

  • PK11_Sign()和(来自 OpenSSL/Mozilla NSS 库)如何PK11_Verify()与RSA 一起工作?PK11_VerifyRecover()
  • 填充如何应用于要签名的输入消息?

我的问题的上下文是:我看到 PK11_Sign() 在签名期间为我的输入数据添加了一些填充。例如(假设密钥大小为 162 位):

我想知道:

  • 这个填充方案的名称是什么以及它是如何工作的?
  • 上述 OpenSSL 函数的默认填充方案是什么?例如,如果我执行“ openssl rsautl -in input.txt -inkey mykey.pem -out signed.txt”,将使用哪种填充方案?
0 投票
2 回答
1206 浏览

java - Java 64 位上的 NSS 32 位包

我有 64 位环境的 Windows 7。配置网关,

我在 64 位平台上运行 NSS3.12.4 32 位并收到此错误。

Libnspr4.dll 无法在 AMD 64 位平台上加载 IA 32 位 .dll

Java 是 64 位的。如何获得 NSS 64 位软件包?如果我将使用 NSS 32 位,有什么方法可以解决此错误?谢谢您的帮助!

0 投票
2 回答
43629 浏览

java - PKCS12 密钥库和 PKCS11 密钥库有什么区别?

我对 Java-NSS 库很感兴趣,并且正在阅读Sun 的 P11 Guide。我对以下内容感到困惑:

使用 PKCS12 密钥库和 PKCS11 密钥库有什么区别?

密钥库只是一个密钥库,对吗?有什么不同吗?它们可以在任何方面互换使用吗?

0 投票
2 回答
2302 浏览

java - 帮助快速启动 NSS

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

我正在尝试尝试,但我不确定nssLibraryDirectoryand是什么nssSecmodDirectory

对于nssLibraryDirectory我应该将所有内容复制dist到一个文件中并从中引用它nssLibraryDirectory吗?怎么样nssSecmodDirectory?我不确定我应该如何配置以开始使用 sun 的 pkcs11。

例如这个微不足道的:

其中 nss.cfg 是:

给出异常

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

0 投票
1 回答
489 浏览

java - 选择客户端证书的 JSS SSLSocket 问题

这是来自 Mozilla Crypto Dev ML 的交叉帖子。希望 SO 上的人有一些使用org.mozilla.jss. 链接:JSS-MDN

我正在尝试分别使用两个客户端套接字和两个不同的客户端证书(客户端证书 A 和 B)向远程主机发出两个单独的 HTTPS 请求。我的测试程序是SSLTest.java的修改版本

从我的主机,我可以在两个不同的套接字上与远程主机建立两个连接。对于两个单独的连接,我能够从远程 Web 服务器收到 200 OK 回复。

我的问题是客户端证书“A”同时用于连接“A”和“B”。

我一直在使用这个构造函数:

我还实现了接口SSLClientCertificateSelectionCallbacksource),以便使用上述构造函数并传递正确的客户端证书。另外,我在我实现的SSLClientCertificateSelectionCallback select()函数中放置了一行来记录执行回调的时间。

运行我的应用程序并检查日志,select() 方法仅在创建第一个 SSLSocket(选择客户端证书'A')期间调用一次,并且在指定客户端证书 B 昵称时永远不会在未来的 SSLSocket 实例化中调用。事实上,我必须重新启动我的应用程序select()才能再次运行。

有没有办法select()在远程服务器请求证书时触发本机回调代码运行?

谢谢,

公关

0 投票
2 回答
1838 浏览

c - 是否可以覆盖/绕过 nscd?

我正在根据呼叫者的姓名制作 NSS 模块答案。例如,如果sshd调用getpwnam_r(...)pw_shell则将是/bin/bash;如果telnetd调用getpwnam_r(...)pw_shell则将是/bin/ksh

制作了一个原型并且它可以工作。但是,当nscd正在运行并且缓存很热时,模块的函数将不会被调用。nscd的缓存结果返回给每个调用者。nscd假设结果的唯一变量是时间;它从没想过进程名会影响结果。

假设我们可以创建一些守护进程或模块来覆盖nscd,代码应该检查进程名称是否在我的列表中。如果它在列表中,请跳过nscd;否则,让nscd回答getpwnam_r(...)

可能吗?


编辑:不太可取,但好的替代方法是在 call 时绕过nscdgetpwnam_r(...)