问题标签 [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.
c++ - 列出来自 CAC 的证书,无需 PIN
我正在开发一个 CAC 身份验证应用程序。
我正在运行 RHEL 5.5 并在我的机器上连接了一个读卡器。当我插入智能卡/CAC 时,在时钟所在窗口的右上角会弹出一个通知,并且可以通过单击图标访问“智能卡管理器”GUI(带有锁定的卡)出现。显示智能卡管理器后,我可以查看卡上的证书列表以及详细信息等,而无需输入密码。
现在,另一方面,在我的 C++ 代码中,当我使用 nss 库获取插槽和列表证书时,我无法在不输入 pin 的情况下获取证书列表。
我想做的是从卡上获取证书列表,并在对话框中将该列表与 pin 文本字段一起呈现给用户,以便用户可以输入 pin,然后选择用于身份验证的证书 ALL IN ONE步骤而不是应用程序必须为 pin 显示单独的对话框,然后为证书选择显示弹出窗口,但似乎使用 nss 库是不可能的,但另一方面,智能卡管理器 gui 可以轻松地做到这一点。谁能指出我是否可以使用单独的 api 从 CAC 获取证书列表的正确方向???谢谢!
c - 在 Linux 上验证 X.509 证书
我刚刚开始使用 X.509 证书。谁能告诉我如何在linux上验证证书?用例是我的应用程序在前一个会话中下载了一个证书,我必须在开始新会话之前检查它是否仍然有效(即,自存储以来未过期或撤销)。我知道这里不可能提供完整的示例,但任何指针都会很有用。
编辑:进一步调查揭示了另一个名为网络安全服务 (NSS) 的实用程序。在可用性方面与 OpenSSL 相比如何?此外,我正在寻找编程解决方案,因为我将无法启动命令行实用程序。
content-management-system - 如何在 NSS 中使用 CMS 强制执行定长编码?
如何在 NSS 中使用 CMS 强制执行定长编码?
我正在尝试让 NSS 的 CMS 编码器使用 DER 进行编码,但是像 mozilla 这样的人显然只担心 BER 编码(据我所知。)我能够使用原始类型获得明确的编码,但所有构造类型都有无限编码。
我目前正在使用的代码(使用 NSS-3.12.7):
任何帮助表示赞赏, Chenz
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
。
谢谢。
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
”,将使用哪种填充方案?
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 位,有什么方法可以解决此错误?谢谢您的帮助!
java - PKCS12 密钥库和 PKCS11 密钥库有什么区别?
我对 Java-NSS 库很感兴趣,并且正在阅读Sun 的 P11 Guide。我对以下内容感到困惑:
使用 PKCS12 密钥库和 PKCS11 密钥库有什么区别?
密钥库只是一个密钥库,对吗?有什么不同吗?它们可以在任何方面互换使用吗?
java - 帮助快速启动 NSS
我开始进入 NSS 并设法构建它。结果被放置在一个名为的文件夹dist
中,并且有几个子文件夹,其中包含几个 exe 的 dll 等。
我正在尝试尝试,但我不确定nssLibraryDirectory
and是什么nssSecmodDirectory
。
对于nssLibraryDirectory
我应该将所有内容复制dist
到一个文件中并从中引用它nssLibraryDirectory
吗?怎么样nssSecmodDirectory
?我不确定我应该如何配置以开始使用 sun 的 pkcs11。
例如这个微不足道的:
其中 nss.cfg 是:
给出异常
原因:java.io.IOException:找不到指定的模块。在 sun.security.pkcs11.Secmod.nssLoadLibrary(本机方法)
java - 选择客户端证书的 JSS SSLSocket 问题
这是来自 Mozilla Crypto Dev ML 的交叉帖子。希望 SO 上的人有一些使用org.mozilla.jss
. 链接:JSS-MDN
我正在尝试分别使用两个客户端套接字和两个不同的客户端证书(客户端证书 A 和 B)向远程主机发出两个单独的 HTTPS 请求。我的测试程序是SSLTest.java的修改版本
从我的主机,我可以在两个不同的套接字上与远程主机建立两个连接。对于两个单独的连接,我能够从远程 Web 服务器收到 200 OK 回复。
我的问题是客户端证书“A”同时用于连接“A”和“B”。
我一直在使用这个构造函数:
我还实现了接口SSLClientCertificateSelectionCallback
(source),以便使用上述构造函数并传递正确的客户端证书。另外,我在我实现的SSLClientCertificateSelectionCallback
select()
函数中放置了一行来记录执行回调的时间。
运行我的应用程序并检查日志,select() 方法仅在创建第一个 SSLSocket(选择客户端证书'A')期间调用一次,并且在指定客户端证书 B 昵称时永远不会在未来的 SSLSocket 实例化中调用。事实上,我必须重新启动我的应用程序select()
才能再次运行。
有没有办法select()
在远程服务器请求证书时触发本机回调代码运行?
谢谢,
公关
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(...)
。