问题标签 [certificate-store]

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 投票
2 回答
268 浏览

c++ - 自签名证书的生成会在商店中创建重复项

在安装我们的应用程序期间,我们会生成一个自签名证书。我们正在使用 Crypt API 来生成证书并将它们插入到存储中。

问题是我们在重新安装应用程序时会生成证书的副本。这只会让证书存储区变得一团糟。

如何检查证书是否已经到位?或者我可以使用某些选项来覆盖现有证书吗?

0 投票
1 回答
2260 浏览

certificate - 从 LocalService 帐户访问证书存储

有什么方法可以访问和查看 LocalService 帐户的证书存储区吗?

我想添加和删除证书。(使用 Windows Server 2008 R2)

我试过了:

还:

没有运气:(

0 投票
2 回答
1163 浏览

c++ - 在 C/C++ 中创建新的证书存储

我正在尝试使用 C/C++ 以编程方式在 Windows 中创建一个新的证书存储。

我从这个函数 - 开始CryptAcquireContext,写了这段代码:

容器名称和提供者名称值是从我应该遵循的设计文档中获取的。

我不知道这是否是创建存储的正确方法,因为在运行此方法并打开 MMC 的证书管理单元后,我看不到给定名称的存储。该程序在第一次运行时打印 1,从第二次开始打印 0。

这是正确的方法吗?如果是,为什么我在 MMC 没有看到商店?如果不是,使用 C/C++ 创建新证书存储的正确方法是什么?

请随时指出代码中的任何错误。

0 投票
1 回答
192 浏览

java - 我的 Java 密钥库中需要什么?

我来自纯 Windows/IIS 环境。这就是我所知道的一切,而且几乎没有。我有一个从 GeoTrust 购买的通配符证书,我想将其应用于在 Java/Tomcat 上运行的站点。显然我应该创建一个 Java 密钥库。过去我已经成功地将导出的 PFX 文件转换为 Java 密钥库,并且它有效,但我并不真正理解我在做什么。我把加密的 PFX 文件的内容(使用 OpenSSL)分离成多个未加密的 .pem 文件,删除它们的头文件,将它们转换为 .der 文件,然后放入它们(只有我确定为私钥和根证书)到 .jks Java 密钥库中。

当我使用它时,这似乎可以恢复,但现在我需要重新实现它,我想了解发生了什么:我需要 CA 证书吗?如果是这样,它们应该分开还是一起(我认为有两个)?我需要根证书吗?别名是怎么回事?我的私钥和整个密钥库本身都受密码保护吗?

我知道的就是这么少。任何帮助,将不胜感激。

0 投票
20 回答
81789 浏览

c# - 尝试加载证书的私钥时出现“指定的提供程序类型无效”CryptographicException

我正在尝试读取第三方服务提供商与我共享的证书的私钥,因此我可以使用它来加密一些 XML,然后再通过网络将其发送给他们。我在 C# 中以编程方式这样做,但我认为这是一个权限或配置错误的问题,所以我将专注于似乎最相关的事实:

  • 我认为这个问题与代码无关;我的代码可以在其他计算机上运行,​​并且该问题会影响 Microsoft 的示例代码。
  • 该证书以 PFX 文件的形式提供,仅用于测试目的,因此它还包括一个虚拟证书颁发机构。
  • 使用 MMC.exe,我可以将证书导入本地计算机的个人存储中,然后将私钥的权限授予所有相关帐户,并将证书颁发机构拖放到受信任的根证书颁发机构中。
  • 使用 C#,我可以加载证书(由其指纹识别)并使用X509Certificate2.HasPrivateKey. 但是,尝试读取密钥会导致错误。在 .NETCryptographicException中,在尝试访问属性时会抛出消息“指定的提供程序类型无效” X509Certificate2.PrivateKey。在 Win32 中,调用该方法CryptAcquireCertificatePrivateKey会返回等效的 HRESULT NTE_BAD_PROV_TYPE,.
  • 这与使用 Microsoft 自己的两个代码示例读取证书的私钥时也会发生的异常相同。
  • 在当前用户的等效存储中(而不是本地计算机)安装相同的证书,可以成功加载私钥。
  • 我在具有本地管理员权限的 Windows 8.1 上,我尝试在正常模式和提升模式下运行我的代码。Windows 7 和 Windows 8 上的同事已经能够从本地机器存储中加载相同证书的密钥。
  • 我可以成功读取位于同一存储位置的自签名 IIS 测试证书的私钥。
  • 我已经针对 .NET 4.5(一些旧版本的框架报告了这个错误)。
  • 我不认为这是证书模板的问题,因为我希望这会同时影响本地计算机和当前用户存储?

与我的同事不同,我之前曾多次尝试以各种方式卸载和重新安装证书,包括通过 IIS 管理器,还包括来自同一颁发者的旧证书。我在 MMC 中看不到任何旧证书或重复证书的痕迹。但是,我确实有许多大小相同的私钥文件,根据最后一次写入时间,在我进行各种安装尝试后,这些文件肯定被遗忘了。这些位于以下位置,分别用于本地计算机和当前用户存储:

c:\ProgramData\Microsoft\Crypto\RSA\MachineKeys

c:\Users\\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-[其余用户 ID]

那么,任何人都可以请告知是否:

  • 最好使用 MMC 卸载证书,删除所有看起来像孤立私钥的文件,然后重新安装证书并重试?
  • 还有其他我应该尝试手动删除的文件吗?
  • 还有什么我应该尝试的吗?

更新 - 添加了显示尝试读取私钥的代码示例:

0 投票
2 回答
215 浏览

c# - 我的软件能否注意到 Windows 证书存储区的变化?(。网)

正如标题所暗示的,我想知道是否有某种事件可以捕捉到证书存储何时发生变化。

目标是检测用户何时输入带有签名证书/令牌的特定类型的 USB 智能卡/记忆棒。证书在 Windows 证书存储中注册(“我的”,个人证书)。

我不喜欢检测 USB 事件的想法,因为在插入密钥的时刻和证书实际注册(并且可用)的时刻之间存在可变延迟。

当然,我总是可以设置一个计时器,每 10 秒左右检查一次存储,但我希望你会同意这是一个不优雅的解决方案。当然,如果没有其他好的选择,我猜我最终会这样做。

谢谢

0 投票
3 回答
71281 浏览

windows - 个人和虚拟主机证书存储之间有什么区别?

在此处输入图像描述

在 Internet 信息服务管理器中,您可以在创建或导入证书时在个人证书存储和 Web 托管证书存储之间进行选择。

有什么不同?

0 投票
2 回答
3775 浏览

c# - 向 x509Store 添加证书不会做任何事情 C#

我正在尝试添加证书,但添加功能似乎没有做任何事情。

我有两个证书。我都可以通过右键单击并保存到个人“testStore”商店来手动添加,但是当我尝试以编程方式添加它们时它们不会被保存。我什至只添加了其中一个,并且 X509Store 对象按预期包含它,但是当我调用 .Add(cert) 时,那里没有保存任何内容。

我错过了什么吗?

编辑我也尝试过使用 StorePermission (如下)并尝试模拟管理员帐户,但这些也没有帮助

0 投票
4 回答
51203 浏览

certificate - certutil:函数失败:SEC_ERROR_LEGACY_DATABASE:证书/密钥数据库采用旧的、不受支持的格式

我下载了一个经过验证(非自签名)的 S/MIME 证书,其中包含存储在 cert8.db 中的 iceweasel(firefox)

然后我用:

为了列出证书,然后我使用 certutil 给我的证书名称提取了 .p12 文件:

问题是我失去了对存储 p12 的 PC 的访问权限,现在我只有一个 cert8.db 副本到另一台 PC。因此我重复了这些certutil && pk12util命令,但 certutil 失败了:

我已经拼命尝试了 3 台不同的计算机,包括一台具有相同内核和libnss3-tools版本的计算机(例如我成功提取 p12 的初始桌面),即:

libnss3-tools版本:2:3.17.2-1

有什么想法吗?

谢谢

0 投票
1 回答
1442 浏览

c# - 如何从我的应用程序的证书存储中删除证书?

我有必须存储证书的 Windows Store/Phone 通用应用程序。我可以轻松地将证书加载到应用程序的 CertificateStore 中并使用它们。但是当谈到删除它们时,我遇到了麻烦。

例如,以下代码非常适合在 Windows 应用商店环境中查找我的证书:

现在,假设我想从商店中删除该证书。我知道的唯一“删除”是在 CertificateStore 对象上。所以我需要获取证书存储,然后进行删除:

只有一个问题。但是,如果您查看 GetStoreName 1的文档,它会说证书存储的名称不能是“MY”。

具有讽刺意味的是,这有时有效,有时却无效。我猜想有一种可接受的方式来做一些事情,比如从商店中删除证书。但我一直无法弄清楚。

提前谢谢了!