x509 C#例子?

zne*_*son 9 .net openssl cryptography bouncycastle x509

我一直在逐条填写关于x509证书创建,签名等的文章,但我还没有找到解决我问题的方法 - 想知道是否有人可以指出我正确的方向,因为我在这一点上完全糊涂了.这是我正在尝试做的事情:

对于客户端应用程序:

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

对于服务器应用程序:

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

我需要在.Net中以编程方式执行此操作,而不使用外部.exe,如makecert.exe或openssl.exe - 我需要使用进程内库等.

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

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

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

Jam*_*olk 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()方法。

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