10

我一直在逐篇阅读有关 x509 证书创建、签名等的文章,但我还没有找到解决我的问题的方法——想知道是否有人能指出我正确的方向,因为我现在完全糊涂了. 这是我正在尝试做的事情:

对于客户端应用程序:

  1. 生成公钥/私钥对
  2. 将密钥作为 byte[] 获取并将它们存储在文件系统中。
  3. 生成 x509 证书
  4. 生成签名请求

对于服务器应用程序:

  1. 生成公钥/私钥对
  2. 将密钥作为 byte[] 获取并将它们存储在文件系统中。
  3. 创建自签名 X509 证书
  4. 签署客户证书
  5. 验证客户端证书是否由上面 #3 中的自签名证书签名。

我需要在 .Net 中以编程方式完成所有这些操作,并且不需要像 makecert.exe 或 openssl.exe 这样的外部 .exe - 我需要使用进程内库等。

我使用各种库(如 Bouncy Castle、.Net Crypto、openssl 等)进行了一些零碎的工作 - 但我总是遇到障碍,要么缺乏文档,要么无法以字节 [] 的形式获取密钥对,所以我可以坚持他们,等等。要么我让这比现在更难,要么那里严重缺乏文档 - 或两者兼而有之。

我认为之前必须有人这样做过,我非常感谢一些帮助 - 我愿意接受任何和所有建议 - 谢谢!

.. 并且 PKIBlackbox 不是一种选择——它的成本太高了 :(

4

2 回答 2

3

您可以使用Bouncycastle C# 库。文档不好,但我相信使用起来并不太难。您可以先访问Javadocs以获取该库的 java 版本;java 和 C# 版本非常相似。其次,看源代码,因为它比较容易阅读。

你想要的课程是Org.BouncyCastle.X509.X509V3CertificateGenerator. 网上有一些 java 示例,您可以将其用作创建 C# 版本的指南。是一个简单直接的。

最后,Bouncycastle 有一个非常有用的类Org.BouncyCastle.Security.DotNetUtilities,它有助于在 Bouncycastle 对象和 .NET 对象之间进行映射。一对这样的方法是ToX509Certificate()FromX509Certificate()。另外,请注意 .NET X509Certificate 类具有Import()Export()方法。

这些一起应该足以让你解决你的问题。

于 2011-01-09T14:11:28.547 回答
0

我已经创建了 X.509 证书并将其存储到 Windows 密钥库中。除了 makecert 之外,几乎没有好的文档可用,并且在大多数情况下 makecert 不是一个可行的选择。我发现复数 API 非常有用,因为它们支持证书生成以及将证书存储到 Windows 密钥库中。几乎没有文档(当然),但如果你搜索它,你会发现一些博客展示了如何使用它。这里有一些链接。

http://www.pluralsight-training.net/community/blogs/keith/archive/2009/01/22/create-self-signed-x-509-certificates-in-a-flash-with-self-cert。 aspx

http://mikehadlow.blogspot.com/2010/02/creating-x509-certificates-with.html

于 2011-01-09T04:42:39.310 回答