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

c# - 将字节数组转换为 X.509 证书

我正在尝试将一段 Java 代码移植到 .NET 中,该代码采用 Base64 编码字符串,将其转换为字节数组,然后使用它来制作 X.509 证书以获取 RSA 加密的模数和指数。

这是我要转换的 Java 代码:

我一直在尝试找出将其转换为 .NET 的最佳方法。到目前为止,我想出了这个:

在我看来它应该可以工作,但是当我使用 Java 代码中的 base 64 编码字符串生成 X509 证书时,它会引发CryptographicException 。我收到的确切消息是:

找不到请求的对象。

Java 的 X.509 实现是否与 .NET 不兼容,或者我在从 Java 到 .NET 的转换中做错了什么?

或者在这种情况下根本没有从 Java 到 .NET 的转换?

0 投票
1 回答
17598 浏览

openssl - 使用 OpenSSL 以编程方式将 .PEM 证书转换为 .PFX

我有一个要转换为 PKCS12 文件 (PFX) 的.PEM 文件,我知道我可以使用以下openssl命令轻松完成此操作:

这很好,但我想使用OpenSSL调用以编程方式执行此操作。不幸的是,OpenSSL 的文档并不理想。

我已经研究过使用其他库来做到这一点:

使用 .NET:我可以从 PEM 文件创建 X509Certificate2 对象,但这只会获取第一个证书并忽略 PEM 文件中的任何中间 CA。

使用Mentalis.org安全库:我可以从 PEM 文件创建证书对象,但我在文档中看到以下内容:

备注 此实现仅从 PEM 文件中读取证书。它不会从证书文件中读取私钥(如果存在)。

所以,这对我没有帮助。我也需要那个私钥。

我基本上需要重新创建用于 PEM>PFX 的 OpenSSL 命令行工具操作,但在代码中。

有没有更简单的方法来做到这一点?

0 投票
5 回答
40445 浏览

c# - 如何从 PKCS#12 字节数组构造 X509Certificate2 抛出 CryptographicException(“系统找不到指定的文件。”)?

我正在尝试X509Certificate2从字节数组中的 PKCS#12 blob 构造一个并得到一个相当令人费解的错误。此代码在 Windows XP 上具有管理员权限的桌面应用程序中运行。

堆栈跟踪如下,但由于_LoadCertFromBlob标记为[MethodImpl(MethodImplOptions.InternalCall)].

编辑: blob 是由BouncyCastle 为 C#生成的真正的 PKCS#12,包含 RSA 私钥和证书(自签名或最近使用 CA 注册)——我要做的是转换私钥和证书从 BouncyCastle 库到 System.Security.Cryptography 库,方法是从一个库导出并导入到另一个库。该代码适用于它尝试过的绝大多数系统。我只是从未见过该构造函数抛出的特定错误。在那个盒子上可能是某种环境怪异。

编辑2:错误发生在不同城市的不同环境中,我无法在本地重现它,所以我最终可能不得不将其归结为XP安装损坏。

不过,既然你问了,这是有问题的片段。该代码采用 BouncyCastle 表示形式的私钥和证书,从个人密钥存储中删除相同专有名称的任何先前证书,并通过中间 PKCS#12 blob 将新的私钥和证书导入个人密钥存储。

0 投票
1 回答
4663 浏览

c# - 如何获取证书的密钥大小

我有一个 X.509 证书,需要获取其密钥的大小(以位为单位) - 例如,1024 2048 等。我查看了 X509Certificate2 以及 bouncycastle X509Certificate 类,但看不到如何获取密钥大小。

0 投票
1 回答
1003 浏览

public-key-encryption - X509 使用序列号或公钥进行证书验证

谁能提供一些关于验证 X509Certificate 的建议。我已经在检查证书是否由受信任的根签名,但是我还想检查证书是否颁发给已知方。

最好的属性是什么?我正在考虑序列号或公钥,但不完全理解两者的含义。我猜公钥的寿命超出了任何重新颁发的证书,而 SerialNumber 仅限于在特定日期颁发的特定证书?

任何人都可以提供一些明智的建议吗?

编辑:看起来证书指纹可能是实现此目的的典型方法。

0 投票
2 回答
2510 浏览

c# - 将 openssl 创建的自签名证书导入 X509Certificate2 (Mono):可以加密,不能解密

我在 Fedora 14、MonoDevelop 2.4、Mono 2.6.7 中。我因此生成了我的自签名证书:

然后我正在玩C#中的加密和解密。我正在选择 .crt 文件。问题是X509Certificate2正在创建的没有私钥!因此,加密操作顺利,并解密炸弹。

我可能错误地运行了 openssl 命令。还是在创建X509Certificate2对象时有些微妙之处?

0 投票
2 回答
1076 浏览

c# - 使用数字签名验证服务器

我了解如何通过数字签名实现不可否认性和完整性,但这是我尚未掌握的身份验证。

我正在用 C# 开发一个客户端-服务器应用程序,它应该能够使用数字证书和数字签名进行身份验证。我知道如何检查签名的有效性和完整性(使用 SignedCms.CheckSignature()),但这如何验证所涉及的任何部分?

例如:

  1. 客户端向服务器请求数字签名,
  2. 客户端收到签名并验证它,
  3. 如果验证成功,请继续。

客户端可能是中间人攻击的受害者,并在步骤 2 中接收到有效签名。验证会成功,但客户端不会与正确的服务器通信。

我错过了什么?

0 投票
4 回答
54887 浏览

c# - 将证书导出为 BASE-64 编码的 .cer

我正在尝试将没有私钥的证书导出为 BASE-64 编码文件,与从 Windows 中导出它相同。从 Windows 导出时,我可以在记事本中打开 .cer 文件。

当我尝试以下操作并在记事本上打开时,我得到二进制数据......我认为它......不可读。

我尝试删除“X509KeyStorageFlags.Exportable”,但这不起作用。我错过了什么吗?

编辑 - 我试过

但是,这似乎可行,缺少“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”

0 投票
1 回答
2679 浏览

iis - HttpWebRequest 客户端证书在 IIS 中不起作用

我正在尝试创建一个托管在 IIS 中的 WCF 应用程序。此 WCF 应用程序将调用第三方网站下载 CSV 文件。第三方网站提供了一个证书来验证 WCF 调用。我的开发环境是

-操作系统:Windows 2008R2 -工具:Visual Studio 2010 (.Net 4.x)

在开发过程中,使用 HttpWebRequest 进行调用没有问题,但是在 IIS 中部署相同的东西后,它给了我以下错误,即使我使用 IIS 作为开发服务器运行 Visual Studio 2010,

"\r\n证书信息与登录不匹配,连接被拒绝。"

安装期间的证书需要密码。我已将其安装在“我的用户帐户”和“计算机帐户”中。它也安装在 IE 中。在所有安装中,它都安装在“受信任的根证书颁发机构”中。但是,我仍然收到错误消息。我在下面给出了我的代码片段,

如果有人可以提供任何信息,那就太好了,再次感谢,

0 投票
1 回答
7885 浏览

.net-3.5 - .NET 3.5 - 导出 X509Certificate2 PublicKey - 找不到请求的对象

我正在尝试X509Certificate2使用以下代码导出证书的公钥:

当我执行最后一行时,会引发以下异常:

有谁知道如何解决这个问题?

注意:上面的代码示例是“功能性的”,但它是伪代码。实际上,我在一个应用程序中导出证书,然后为了数字签名而传输到另一个应用程序(因此只发送公钥)