x509 C#例子?

时间:2011-01-09 03:34:44

标签: .net cryptography openssl bouncycastle x509

我一直在逐步填写关于x509证书创建,签名等的文章,但我还没有找到解决问题的方法 - 想知道是否有人可以指出我正确的方向,因为我彻底搞糊涂了在此刻。这就是我想要做的事情:

对于客户端应用:

  1. 生成公钥/私钥对
  2. 将密钥抓取为byte []并将其存储在文件系统中。
  3. 生成x509证书
  4. 生成签名请求
  5. 对于服务器应用程序:

    1. 生成公钥/私钥对
    2. 将密钥抓取为byte []并将其存储在文件系统中。
    3. 创建自签名X509证书
    4. 签署客户证书
    5. 将客户端证书验证为由上面#3中的自签名证书签名。
    6. 我需要在.Net中以编程方式执行此操作,不需要外部.exe,如makecert.exe或openssl.exe - 我需要使用进程内库等。

      我使用Bouncy Castle,.Net Crypto,openssl等各种库来制作零碎的东西 - 但是我总是遇到一个障碍,要么缺少文档,要么无法以字节[]的形式访问密钥对所以我可以坚持他们,等等。要么我比这更难,要么就是严重缺乏文件 - 或者两者兼而有之。

      我认为有人必须先做过这件事,我真的很感激一些帮助 - 我对所有建议都持开放态度 - 谢谢!

      ..而且PKIBlackbox不是一个选项 - 它的成本太高了:(

2 个答案:

答案 0 :(得分:3)

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

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

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

这些应该足以让您解决问题。

答案 1 :(得分:0)

我已经创建了X.509证书并存储到windows密钥库中。除了makecert之外,几乎没有很好的文档,在大多数情况下,makecert不是一个可行的选择。我发现pluralsight 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