支持HTTPS的Httplistener

关于使.NET HTTPListener HTTPS具备能力,似乎存在许多令人困惑的,有时相互矛盾的信息。我的理解如下:

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

  • 实际的SSL握手发生在幕后并由http.sys(安装在Windows机器上的某个地方)处理。C#代码不必显式管理SSL握手,因为它发生在封面下。

  • 需要在计算机上安装“X.509可信证书” httpListener,并且某种程度上证书需要绑定到端口8443(在此示例中)。

我的理解是否正确?如果没有,请教育我。

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

  • 使用makecert创建的X.509证书。此证书存储在个人存储中,需要转移到可信存储(这是HTTP侦听器所在的位置)。似乎我可以certMgr用来执行移动,或者我可以用它mmc来实现移动。似乎有一个以上的X.509证书格式(DERBase64pks,PSWD保护,pks私有等)...有没有我应该使用首选格式?

一旦我将证书送入可信商店,我需要将其绑定到TCP端口。我在Windows 7上:我应该使用httpcfg还是netsh


UYOU
浏览 2727回答 3
3回答

HUX布斯

我做了一堆功课,让这个工作。为.NET HttpListener添加SSL支持的步骤如下:更新C#应用程序代码以包含https前缀。例:String[] prefixes = { "http://*:8089/","https://*:8443/" };从代码方面来看就是这样。对于证书方面的事情,使用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证书将证书绑定到IP address:port应用程序。例: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值。可能还有其他方法可以实现上述目标,但这对我有用。
打开App,查看更多内容
随时随地看视频慕课网APP