问题标签 [pki]
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# - 加密库?
我的任务是在 C# 中为一个公司项目实现一个 PKI 库,但一直找不到一个好的实现。似乎有多个库,并且指向已删除的 MSDN 库的许多断开的链接。我见过使用 Crypt32.dll 的人,构建自己的库的人,使用 P/Invoke 访问系统证书存储的人,扩展内置库的人,根本不适用于 C# 的示例(例如 Java 示例),和商业图书馆。
我的问题是,对于简单的数据加密/解密,最推荐使用哪个实现/库?
作为我计划使用它的一些背景知识,我只需要使用私钥 (.pfx) 加密消息,并使用公钥 (.cer) 解密。项目的这个级别不需要消息签名和身份验证,尽管将来可能需要。我看到了对加密长度的引用,这让我感到不安。我们需要能够加密任何长度的消息(当然,在合理范围内!)。这是我需要担心的事情吗?如果是这样,有没有办法处理它?
如果可能的话,我宁愿不将公钥/私钥存储在 Windows 证书管理器中,但如果它使实现变得更加简单,那就这样吧。
我意识到 PKI 和加密是一个庞大而复杂的主题,但无论如何我希望有一个相对简单的库......(可以希望,对吗?)
谢谢!
windows - 在 DB 中存储 X509 证书 - 是还是不是?
我发现自己需要存储公钥证书和内部应用程序的单个私钥证书。
我们团队的一位成员建议将 X509 证书存储在数据库中,而不是像我们迄今为止所做的那样将其存储在 Windows 证书存储中。我不喜欢重新发明轮子,但我至少必须考虑这个想法。这意味着让我们的数据更加集中,这很好,我想。
我能看到的最初的障碍是:
- 私钥仍然需要存储在某个地方,我不知道将它硬塞到“公钥”表中是否是个好主意。我也不喜欢为单个元素设置表格的想法。也许只是将私钥保存为本地文件?(例如 .pfx 文件)。
- 吊销清单。我们可能必须建立一个流程来处理被撤销的公钥。
我对 X509 证书没有太多经验,所以,我的问题是:在数据库中存储公钥证书而不是使用 Windows 证书存储库时,我们可能会遇到其他问题吗?
值得牢记的是,该应用程序将部署到多个业务客户端服务器上,因此将所有数据保存在一个地方将使备份更容易。哦,有问题的内部应用程序是用 C# 开发的。
谢谢!
encryption - 您使用什么系统为一群人加密文件(首选操作系统无关)?
假设您有一堆文件。假设您可以将元数据存储到这些文件中。比如说,这些元属性之一被称为“加密” 假设每个人都可以查看这些文件,但由于它们是加密的,只有知道如何解密它们的人才能真正读取内容。比如说,对于每个给定的“加密”值,一群人分享如何解密标有该值的文件的知识。假设您希望能够以与操作系统无关的方式以编程方式执行此操作(如果可能)
您将用于“加密”的值是什么?您将如何存储密钥?您将如何组织对密钥的访问?
我目前倾向于以下实施:
- “加密”字段的值包含密钥的名称,可能还表示使用的算法
- 每个用户都可以访问一堆密钥。这可以由用户在类似 LDAP/ActiveDirectory 的结构中的角色定义,或者它们可以只是用户配置文件/主目录中安全目录中的文件。
- 在查看文件时,查看器(我正在尝试构建文档管理系统)检查用户密钥并在找到匹配密钥时解密文件。
你会使用什么加密?对称(AES)?或不对称(什么是好的)?
使用非对称密钥还有一个额外的好处,那就是在读取文件和写入文件之间有所不同:写入文件需要访问私钥,访问公钥(仅半公开,因为只有某些角色可以访问它)将允许读取文件。我在这里完全错了吗?
在中小型企业中解决这些问题的常用系统是什么?
编辑:似乎没有通用的解决方案。因此,我将更清楚地说明我要解决的问题:
想象一个以分布式方式运行的文档管理系统:每个文档都被复制到(公司控制的、私有的)P2P 网络中的各个节点。确保文档冗余的算法用于确保所有文档(包括修订)的备份。该系统在后台作为服务/守护程序工作,并来回铲除文档。
这意味着,用户最终会得到可能不打算在他们的本地工作站(公司控制的 PC 或笔记本电脑或其他东西)上看到的文档 - 设置是这样的,SME IT 人员设置这一切并控制谁是其中的一部分P2P 网络)。
这排除了基于目录访问的方案,因为用户可能能够访问数据。我在这里弄错了吗?本地文件夹是否可以加密,使其只能由域用户访问?那有多安全?
我知道用户共享文件的解密版本——这在技术上很难压制。这不是我要解决的问题。
pki - MS CA 退出模块代码或教程
我正在努力寻找对 MS 证书颁发机构出口模块进行编码的示例/解释。
如果有人有任何帮助或资源,他们可以指出我,我将不胜感激。
digital-certificate - 是否允许 CA 在签名前修改 CSR?
谁能告诉我是否允许证书颁发机构 (CA) 在使用自己的私钥实际签署证书之前对证书签名请求 (CSR) 进行修改?
具体来说,我想知道 CA 在添加签名之前将其他字段(例如 EKU)插入证书是否有效。
authentication - 如何从断开的网络生成 SSL 客户端证书?
我有一个独特的情况,我需要在 IE 浏览器和 IIS 6 之间通过 HTTPS 实现客户端证书身份验证。浏览器和 IIS 被防火墙隔开,只允许浏览器在 SSL 端口上连接到 IIS。
我们在与 IIS 相同的网络上有一个内部证书服务器。我已经为 IIS 生成了一个 SSL 服务器证书并已安装。我将 IIS 配置为仅允许 SSL,需要客户端证书。
这里的限制是浏览器机器在断开的网络上,所以我不能像往常一样访问 CA 的http://caserver/CertSrv URL 并请求客户端证书。
我想如果有一种方法可以针对根 CA 的公钥生成 CSR,我可以将其复制到 CA 服务器以生成客户端证书。但是,在 IE 或证书 MMC 中似乎没有任何规定可以做到这一点。证书 MMC 似乎需要直接连接到 CA。
以前有没有人解决过这个问题?
仅供参考,所有引用的服务器都运行 Windows Server 2003。
更新:感谢 Jonas Oberschweiber 和 Mark Sutton 指出 CertReq.exe 命令行工具。使用它,我生成了一个 CSR,因此生成了一个成功安装的客户端证书。但是,在访问有问题的 IIS 服务器时,IE 显然没有发送此客户端证书;它仍然会生成 403.7“禁止:需要 SSL 客户端证书”。我怀疑原因是客户端证书的主题字段与运行 IE 的帐户的用户 ID 不匹配,因此可能没有发送不匹配的客户端证书。主题与我用来提交 CSR 并在防火墙另一端生成客户端证书的用户相匹配。
主题字段重要吗?我还需要做些什么来让 IE 发送这个证书吗?
java - 基于浏览器的文档签名(带数字签名)的最佳跨浏览器解决方案是什么?
我需要实现一个基于浏览器的组件(很可能是 java 小程序,因为它需要跨浏览器),它允许我们对 XadES 格式的数据进行数字签名和验证。有哪些可用选项以及最佳解决方案是什么?
certificate - 1 类和 3 类根以及它们签署的证书有什么区别?
问题说的差不多。这两类根有什么区别?这些根签署的证书之间的区别?1 类签名证书有什么用途,而 3 类没有,反之亦然?
pki - 最佳(免费)证书管理工具
我最近下载了一个用于管理证书文件的简洁 Java 工具——比如 PEM、PFX 等。从内存中它是用 Java 编写的,但是,对于我的生活,我找不到它(清除下载列表和不明显的文件名!)。
这让我提出了一个问题——管理证书有哪些免费工具?上述工具可以生成证书并通过其 UI 显示它们。
我只是想要一些东西来跟踪我的证书,并且通常可以更轻松地查看它们的详细信息,而无需使用正式的 CA 工具或 keytool/其他命令行工具来查看我正在处理的证书。
web-services - “wsse:InvalidSecurity”是什么意思?
顺便说一句,这是一个 WS-Security 问题...
我看不出我的 WS 端点有什么问题(除了它在 TIBCO BW 引擎中运行的事实!)。有人对这种错误有任何“先验”吗?我意识到 WS-Security 标头可能会在任何地方被破坏以获取此错误,但是对于某种常见错误,必须有 90% 的百分比。
这是受保护的 SOAP - 客户端是独立的 java (WSS4J 1.5.0),仅在此阶段执行签名。