2

我正在尝试创建一个使用 HTTPS 的小型 C# Web 服务器。我决定使用这个 WebServer 库,因为它似乎可以完成我正在寻找的一切。在 SSL/TLS 方面,我不是知识最渊博的人,所以我想知道是否有人可以帮助我让它的 HTTPS 部分正常工作。基本上,我需要它来创建一个可与 Web 服务器库一起使用的 SSL 证书(在此示例中,它看起来像是使用 X.509 证书),然后将该证书添加到计算机和/或当前的受信任证书中用户。

这是我到目前为止的代码(基本上只是从示例中复制和粘贴):

var certificate = new X509Certificate2("C:\\Certs\\certificate.dat", "password");

// We do the cast since we want to specify UseClientCert
var listener = HttpListener.Create(System.Net.IPAddress.Any, 8080, certificate);
listener.RequestReceived+=listener_RequestReceived;
listener.Start(5);

在该代码之前的某个地方,我需要检查“C:\Certs\certificate.dat”是否存在并且受计算机信任,如果不存在,它应该创建证书并信任它。

应用程序运行提升,因此权限问题应该不是问题

编辑1:看起来我应该解释一下我到底想要做什么。我正在尝试创建一个程序,该程序在运行时将启动要在本地计算机上使用的 HTTPS Web 服务器。我并没有尝试使用密钥进行任何类型的真正验证,只是为了让计算机访问 HTTPS 本地页面而不会收到大量“OMG THIS PAGE DOESNT HAVE N GOOD SECURITY KEY!!!” 错误。它仅用于测试和非敏感数据,因此实际安全性并不那么重要,只要它有效。

在代码方面,我使用这个 WebServer 库来处理实际的 Web 服务,代码来自这个示例

4

1 回答 1

3

您不需要在 C# 代码中创建证书,您可以在程序中自带(即由makecert 制作)。要检查它是否已经安装 itearate 对应X509Store的,看看它是否已经安装,如果没有 - 添加一个。示例可以在StoreName 枚举主题中找到。

以下是您需要从 MSDN 上的示例中操作商店/证书的随机行:

X509Store store = new X509Store(StoreName.My);
store.Open(OpenFlags.ReadWrite);
X509Certificate2 certificate1 = new X509Certificate2("c:\\mycerts\\*****.cer");
store.Add(certificate1);
foreach (X509Certificate2 x509 in storecollection)
{
  Console.WriteLine("certificate name: {0}", x509.Subject);
}

笔记:

  • 添加证书是特权操作,可能需要某些商店的管理员特权。
  • 您可以查看 Fiddler 的证书行为,看看您是否想要类似的提示。(启用 HTTPS 解密时,Fiddler 会安装自己的证书)。
于 2012-10-21T00:19:32.593 回答