问题标签 [x509certificate2]

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 回答
643 浏览

.net - 如何在 .NET 中使用 X509Certificate2 进行相互 SSL?私钥无法识别

所以,我有一个私钥,以及 2 个文件中的证书......我需要将其提供给 X509Certificate2 以用于相互 SSL。当我简单地这样做时new X509Certificate2- 我可以指定一个文件名。我用两者创建了 .pem 文件,但cert.HasPrivateKey显示为 FALSE。

两者都在一个文件中的格式是什么,并且 X509Certificate2 会理解?

0 投票
3 回答
1945 浏览

c# - 从 .NET COM 库中解码 ASP Request.ClientCertificate("Certificate")

为了进一步完善我的问题,这是第三次重写。简而言之,这是一个场景。

  1. 旧版 ASP/VBscript 网站
  2. .NET / C# COM 库,用于 ASP 站点
  3. 我想将原始形式的 Request.ClientCertificate("Certificate") 发送到我的 .NET COM 库并对其进行解码,以便我可以根据 Active Directory 中的客户端证书验证字段。

    • Request.ClientCertificate("Certificate")的文档说它是代表 ASN.1 格式证书的二进制数据字符串。我的 .NET 方法接收这个参数有一个字符串类型。我尝试使用Encoding.UTF8.GetBytesEncoding.Unicode.GetBytesEncoding.ASCII.GetBytes将其转换为X509Certificate2构造函数期望的字节[] 。

我尝试在 Google 上搜索我能找到的关于如何以原始形式对 ASP Request.ClientCertificate 做一些有用的事情(即解码)的每一条信息,但结果都是空的。我还将这些数据保存到一个文件中,并尝试使用 CertUtil 对其进行解码,但它仍然无法解码数据并且只是出错。

当我继续玩这个时,我决定查看 ASP 和 ASP.NET 返回的客户端证书的大小,发现大小不匹配。我来自 ASP 的证书在 ASP.NET 中是 647 字节和 1295 字节。我不知道为什么两个环境之间的大小会出现偏差。因此,无论使用 X509Certicate2 类解码 ASP.NET 返回的客户端证书,我都没有任何问题。

我也尝试过使用以下 p/invoked 函数:

因此,在使用 X509Certificate、X509Certificate2 和上面的函数的任何一种情况下,我都会得到一致的结果,来自 ASP 的证书不能被这些函数使用。当我尝试使用代表证书的 byte[] 构造它时,X509Certificate 类只会引发异常。

我尝试使用 CAPICOM 库导入证书,但得到的异常与 X509Certificate2 类给我的异常完全相同。

找不到请求的对象

所以总而言之,我想要做的是,利用 X509Certificate 类集从 .NET / C# COM 库中解码 ASP Request.ClientCertificate("Certificate")。

0 投票
4 回答
17617 浏览

c# - How to create a minimal dummy X509Certificate2?

I'm unit testing a .NET application; some of the unit tests involve programmatically generating X509Certificate2 objects.

I don't care about actual signing/private key/validation stuff, I'd just like to have an object that doesn't throw exceptions when its fields are examined. I tried using the parameterless constructor, but then a whole bunch of fields throw exceptions when accessed. As seen in the debugger:

SubjectName = '(new System.Collections.Generic.Mscorlib_CollectionDebugView(result.Certificates)).Items[0].SubjectName' threw an exception of type 'System.Security.Cryptography.CryptographicException'

I also tried passing a byte array with some random numbers in it, but that didn't even construct (does the array need to be a specific size?)

So, question: what is the simplest (fewest lines of code) way to programmatically generate an X509Certificate2 object which will not throw exceptions upon field/property accesses?

0 投票
1 回答
1419 浏览

certificate - 谁能告诉我CSR版本和证书版本之间的区别?

我想使用 CSR (RFC2986) 生成 X509 v3 证书,但 RFC 说 PKCS10 (CSR) 仅支持 v1。谁能告诉我区别?

0 投票
1 回答
1197 浏览

asp.net - 随着时间的推移,存储在证书存储中的证书从 ASP.NET 应用程序中消失

我有一个来自 Thawte 的代码签名证书,用于动态生成和签署 ClickOnce 部署清单。问题是,当我们重新启动 IIS 或重新导入签名证书时,生成和签署这些清单的 ASP.NET 应用程序工作正常,但随着时间的推移,以下函数无法找到证书:

最终,应用程序开始抛出找不到证书的错误。我很困惑,因为我认为证书安装正确(或大部分正确),因为它确实在我们启动 ASP.NET 应用程序时找到了证书,但在某些时候我们点击了 Count==0 分支,但事实并非如此:证书位于应用程序池用户的“当前用户\个人”证书存储中。

问题:为什么证书会突然“消失”或找不到?

0 投票
1 回答
508 浏览

security - 为什么多次调用 X509Certificate2.Export(Pkcs12) 返回不同的结果?

这是一个测试:

当使用 using 调用时X509ContentType.Cert,该值始终相同,因此控制台打印“True”。但是当使用 Pkcs12 选项时,值总是有很大的不同。为什么会这样,有没有办法使它们相同?

0 投票
1 回答
5737 浏览

c# - 导入 .p12 文件中包含的所有证书

我有一个.p12文件供我的 ASP.NET 应用程序通过 HTTPS 连接到 Web 服务。

我正在尝试将.p12文件导入本地机器/我的商店。该.p12文件包含多个证书。一个包含私钥,另一个是完成链的 CA 证书。

目前我正在使用 `System.Security.Cryptography.X509Certificates.X509Certificate2 对象的 Import 方法将此文件导入商店。今天我注意到 CA 证书没有被导入,只有包含私钥的主证书使用这种方法被导入。在进一步查看 MSDN 后,我发现有关 Import 方法的以下规则:

请注意,PFX/PKCS12 证书可以包含多个证书。在这种情况下,使用与私钥关联的第一个证书,或者,如果没有找到私钥,则使用第一个证书。

谁能向我建议另一种以.p12编程方式导入文件的方法,该方法实际上会导入文件中的所有证书?我正在使用PowerShell来执行此功能。

0 投票
4 回答
24331 浏览

c# - 从 X509Certificate 对象导出私钥

我们使用 C# 代码用 .p12 文件构建 X509Certificate2,在构造函数中我们插入证书的路径,证书的密码。我们还将其标记为可导出,如下所示:

我们通过以下方式获得非对称算法格式的私钥:

现在,我们想从证书中获取Base64格式的私钥——但我们不知道如何去做,这对我们来说非常重要。

0 投票
2 回答
2238 浏览

c# - 在 C# 中将 asn1 转换为 base64

有没有办法使用 C# 代码将 X509Certificate 的 ASN.1 编码私钥转换为 Base64 格式?

0 投票
1 回答
9040 浏览

c# - 将私钥导出为字节数组的最佳方法

我编写的应用程序必须从用户那里获取私钥,然后将其作为 base64 发送到另一个应用程序,我想允许用户使用私钥插入 X509Certificate2。现在我的大问题是如何将私钥从 AsimetricAlgorithm 对象转换为包含所有私钥的 bate 数组?我看到我可以使用 openSSl - 将所有证书转换为 pem 文件,然后转换为 RSA 文件 - 并读取私钥,但我不想使用它,因为:我不想在文件上使用 3P 库,它不是安全等等..有人知道另一种方法吗?

提前致谢!