gpt4 book ai didi

.net - 支持 HTTPS 的 HttpListener

转载 作者:行者123 更新时间:2023-12-03 05:43:51 25 4
gpt4 key购买 nike

关于使 .NET HTTPListener 支持 HTTPS,似乎有很多令人困惑、有时甚至相互冲突的信息。我的理解如下:

  • 一个人的 C# 代码需要一个 https 前缀(例如 https://*:8443),以便监听器了解它需要在此端口服务 SSL 请求。

  • 实际的 SSL 握手发生在幕后,并由 http.sys(埋藏在 Windows 计算机上的某个位置)处理。 C# 代码不必显式管理 SSL 握手,因为它发生在幕后。

  • httpListener 计算机上需要有一个“X.509 可信证书”,并且该证书需要以某种方式绑定(bind)到端口 8443(在本例中)。

我上面的理解正确吗?如果不会,请赐教。

关于X.509证书,我的理解是:

  • 使用 makecert 创建 X.509 证书。该证书存储在个人存储中,并且需要移至受信任的存储(这是 HTTP 监听器将查找的位置)。看来我可以使用 certMgr 来执行移动,或者我可以使用 mmc 来实现移动。似乎有不止一种 X.509 证书格式(DERBase64pks、pswd protected、pks > 私有(private)等)...我应该使用首选格式吗?

将证书放入受信任存储区后,我需要将其绑定(bind)到 TCP 端口。我使用的是 Windows 7:我应该使用 httpcfg 还是 netsh

最佳答案

我做了很多功课并且成功了。为 .NET HttpListener 添加 SSL 支持的步骤是:

  1. 更新 C# 应用程序代码以包含 https 前缀。示例:

    String[] prefixes = { "http://*:8089/","https://*:8443/" };

    从代码方面来说就是这样。

  2. 对于证书方面,使用 Windows SDK命令控制台或 Visual Studio Professional 命令控制台

    • 使用makecert.exe创建证书颁发机构。示例:

      makecert -n "CN=vMargeCA" -r -sv vMargeCA.pvk vMargeCA.cer
    • 使用makecert.exe创建SSL证书

      makecert -sk vMargeSignedByCA -iv vMargeCA.pvk -n "CN=vMargeSignedByCA" -ic vMargeCA.cer vMargeSignedByCA.cer -sr localmachine -ss My
    • 使用 MMC GUI 在 Trusted Authority 存储中安装 CA

    • 使用 MMC GUI 在个人存储中安装 SSL 证书
    • 将证书绑定(bind)到IP地址:端口和应用程序。示例:

      netsh http add sslcert ipport=0.0.0.0:8443 certhash=585947f104b5bce53239f02d1c6fed06832f47dc appid={df8c8073-5a4b-4810-b469-5975a9c95230}

      certhash 是您的 SSL 证书的指纹。您可以使用 mmc 找到它。appid 可在 Visual Studio 中找到...通常在 assembly.cs 中,查找 GUID 值。

可能还有其他方法可以完成上述任务,但这对我有用。

关于.net - 支持 HTTPS 的 HttpListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11403333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com