问题标签 [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 投票
1 回答
2821 浏览

powershell - 如何访问带有错误的证书:“无法检索证书,因为指纹无效”

我收到错误

无法检索证书,因为指纹无效。验证指纹并重试。

当我尝试在 LocalMachine 证书存储中使用证书时。

我有一个管理员帐户在LocalMachine证书存储中安装了证书(包括私钥),并为某些用户(例如功能 ID)提供了对私钥的访问权限。

我希望能够运行以下代码来获取指纹,然后在Invoke-WebRequest调用中使用它:

我可以获得包括指纹($certDetails)在内的证书详细信息,但似乎权限不允许我(或 FID)使用证书(或者可能只是访问证书的私钥部分)。当证书安装在CurrentUser存储中时,该代码有效。

如何为此类非管理员用户启用对LocalMachine存储中证书的访问权限?

0 投票
0 回答
450 浏览

windows - Git-For-Windows 没有读取我的自签名 SSL 证书

我通过 GPO 将我的 CA 证书部署到受信任的根证书颁发机构中,我可以看到它已部署到我的客户端计算机上。我知道这部分工作正常,因为 Chrome 在使用我签名的 SSL 证书浏览网站时不再抱怨。

但是,当我尝试使用 git clone 或推送到由该 CA 签名的 SSL 证书后面的任何存储库时,git-for-windows 会大吃一惊并说:

schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - 吊销功能无法检查证书的吊销。

如您所见,我启用了 schannel,但 git-for-windows 显然没有从 Windows 的证书存储中读取我的 CA 证书。有谁知道我如何让 gfw 从 Windows 的证书存储中读取?我无法手动将此证书复制到我所有的 Windows 客户端上,这将花费很长时间。

或许值得注意的是,我使用多个 Samba 4 实例作为域控制器,但我无法访问 Windows Server 工具,例如 AS 证书服务。

注意。我知道我可以禁用 tls 验证,但这肯定会违背目的。

0 投票
1 回答
663 浏览

c++ - 具有支持内存存储和证书信任列表的 CertGetCertificateChain

我需要在证书链验证期间将自定义自签名根证书标记为受信任,总的来说,我希望尽可能地依赖系统 API。

我创建了一个临时内存存储。

然后我将自定义根证书放入存储中。

CertGetCertificateChain MSDN 文档说

hAdditionalStore 用于搜索支持证书和证书信任列表 (CTL) 的任何附加存储的句柄。

据我了解,如果我使用根证书创建 CTL 并将其放入商店,CertGetCertificateChain 将信任它。因此,我在分配的缓冲区中创建根证书 CTL 条目,然后将其复制到std::vector ctlEntries

然后我创建 CTL 本身。

上面的所有 API 调用都成功完成,但是当我调用 CertGetCertificateChain 时,它仍然在 TrustStatus.dwErrorStatus 中返回 CERT_TRUST_IS_UNTRUSTED_ROOT。

潜在的解决方法

如果我收到 CERT_TRUST_IS_UNTRUSTED_ROOT 错误,我只需从证书存储中提取 CTL 并检查结果链中的根(由 CertGetCertificateChain 返回)是否在 CTL 中。它有效,但对我来说仍然不能完全接受。我想依靠 CertGetCertificateChain。


解决方案有什么问题?我必须使用哪些特定的证书信任列表 OID?在这种情况下,对根证书是否有任何要求(如特定扩展)?

ps 测试证书是使用此指令创建的https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309

更新日期:2020-01-31

CertModifyCertificatesToTrust 没有帮助。它成功完成,但仍报告该链具有不受信任的根。可能,问题出在不同的领域。

}

0 投票
1 回答
525 浏览

ssl - 如何在 Jetty 中使用 Windows 证书存储?

我正在尝试使用 Jetty 的Windows 证书存储进行 HTTPS 通信。

在此处输入图像描述

在客户端站点上设置 Web 应用程序后,客户端更新 Windows 证书存储中的过期证书应该比创建或更新 keyStore 文件更容易。

这就是我所做的:

从https://www.eclipse.org/jetty/download.html下载最新版本 9.4.26

在start.ini中添加了以下行:

运行为:

这是我得到的错误:

我还尝试添加或更改行,结果相同:

-

-

0 投票
0 回答
187 浏览

node.js - 如何让 Node 信任我的 Windows 操作系统证书存储中的根证书?

我的组织已经在我们的机器中预先安装了自己的根证书,以使其能够检查 HTTPS 流量。浏览器不会抱怨,因为它们默认信任操作系统证书。这会导致我在使用 NodeJS 时遇到各种问题,它不信任这些证书。

NODE_EXTRA_CA_CERTSNode 可以通过设置选项来扩展它将信任的证书,我正在尝试使用它。问题是:这个选项需要一个文件:

NODE_EXTRA_CA_CERTS=文件

设置后,众所周知的“根”CA(如 VeriSign)将使用文件中的额外证书进行扩展。该文件应包含一个或多个 PEM 格式的受信任证书。

在 Windows 上哪里可以得到这个文件?

0 投票
1 回答
123 浏览

private-key - 将带有 privateKey 的 X509Certificate2 对象存储到 CertStore 的最佳方法

我已经生成了一份 CSR,并对其进行了签名。我仍然拥有用于创建 CSR 的私钥,并且我想将该证书与该私钥一起存储在 Windows CertStores 中。

我衡量成功的标准是:

当我在 CertStore 中查看证书时,它被标记为具有私钥。具体来说,它在证书图标的左上角有一个小的“密钥”子图标,如果你打开证书,它会在 ValidDates 信息下显示“你有一个与此证书相对应的私钥”。

我们最初认为这.CopyWithPrivateKey(RSA key)会为我们做到这一点,但它似乎并不能单独工作。我们还需要设置一些 keyStorage 标志,但我们只能.Export()通过将 cert放入byte[]数组然后使用另一个构造函数调用“导入”它来做到这一点。

我尝试了很多变体,这是唯一有效的事件序列:

因此,我执行此操作的最终代码如下所示:

最后一个选项确实有效,但似乎比应该需要的步骤多得多,这表明我将要定义自己的扩展方法:.ActuallyCopyWithPrivateKey,以替换该方法的 .NET 框架版本。这似乎是错误的。

有没有更好的方法来实现这一点,或者它真的需要所有 4 个步骤。

0 投票
1 回答
330 浏览

linux - 在 Linux Azure VM 的 /var/lib/waagent/ 中找不到 SSL 证书

我正在尝试为托管在 Linux 虚拟机中的网站添加 SSL 证书。我成功添加了证书:

然后,我检查了证书是否添加成功:

但是,当我签入 /var/lib/waagent/ 时,我找不到证书123456ABCDFG。我不知道它在哪里?

0 投票
1 回答
135 浏览

c++ - 如何指向/访问证书文件`CertCreateCertificateContext`函数?(wincrypt api)

Windows 编程/C++ 有点新。我正在尝试将 .p7b 根证书文件安装到受信任的根证书存储中。我想使用 Windows Wincrypt 库。具体来说,这些是我从旧论坛获得的建议步骤:

  1. 使用您的证书内容字节调用CertCreateCertificateContext以获得PCCERT_CONTEXT
  2. 调用CertOpenSystemStore设置szSubsystemProtocol为“ROOT”以获得HCERTSTORE
  3. CertAddCertificateContextToStore使用上述HCERTSTORE和 调用PCCERT_CONTEXT

[这里是] CertCreateCertificateContext的 api 文档。不知道如何只指向pbCertEncoded我的实际证书文件。我应该把它指向路径吗?我必须加载证书吗?类型应该是什么?

0 投票
1 回答
254 浏览

ssl - 如何让 Chrome/浏览器接受我的 SSL 证书(由我自己的 CA 的中间证书签名)

我来自 DEV 背景,但正在努力提高我的安全/操作技能以变得更加通用。

我已经按照本指南建立了自己的本地证书颁发机构(尽管相当松散)。

我成功地为 test.mydomain.com 创建了一个根对(密钥和证书)、一个中间对和一个服务器对。

然后,我将 nginx 配置为 Node.js Web API(由 Express FWIW 提供服务)的服务代理。nginx 和 nodejs 服务都是容器化的,我只是使用 docker-compose 在本地运行它。我还添加了一个主机条目,以便我可以使用 test.mydomain.com 访问我的服务。最终我想在 Kubernetes 中实现 service-proxy/sidecar 模式(nginx 和(微)服务在同一个 pod 中运行),但现在我只是想让它在 docker 中工作。

这一切都在 HTTP 上工作,所以下一步是让它在 HTTPS 上工作(TLS 在 nginx 服务代理处终止,然后请求通过 HTTP 代理到 Node.js 服务)。它正在工作,但我无法让我的浏览器(在 Windows 中运行的 Chrome)接受我的证书。

在此处输入图像描述

我尝试了几种将证书导入 Windows 证书存储的组合,包括:

  • 将根证书导入受信任的根 CA 证书存储
  • 将中间证书导入中间 CA 证书存储
  • 链接根证书和中间证书并导入到根 CA 证书存储

但我无法让 Chrome 接受我的证书。

仅供参考 nginx 配置如下

我应该为ssl_certificatenginx 中的设置链接服务器、中间证书和根证书吗?.. 我应该将什么证书(或链接证书)导入到哪个证书存储?

我还注意到有一个ssl_trusted_certificatenginx 设置,我不确定是否应该使用它...

干杯,瑞恩。

0 投票
1 回答
137 浏览

azure-service-fabric - NT AUTHORITY\NETWORK SERVICE - 不同的语言 (FABRIC_E_CERTIFICATE_NOT_FOUND)

NT AUTHORITY\NETWORK SERVICE 在我看来不是英文的原因是什么?我在运行一些按英文名称搜索的 powershell 脚本时遇到了一些问题。我只能通过sid找到。我在安装一些证书时遇到了一些问题,我相信这就是原因。

$objSID = 新对象 System.Security.Principal.SecurityIdentifier ("S-1-5-20") $objSID

$objUser = $objSID.Translate([System.Security.Principal.NTAccount]) $objUser.Value

这将返回给我 NT AUTHORITY\Serviço de rede(葡萄牙语网络服务)

我怎样才能把它改成英文?提前致谢,

曼努埃尔