为了账号安全,请及时绑定邮箱和手机立即绑定

支持HTTPS的Httplistener

支持HTTPS的Httplistener

UYOU 2019-09-19 15:30:08
关于使.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证书格式(DER,Base64,pks,PSWD保护,pks私有等)...有没有我应该使用首选格式?一旦我将证书送入可信商店,我需要将其绑定到TCP端口。我在Windows 7上:我应该使用httpcfg还是netsh?
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

我做了一堆功课,让这个工作。为.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值。


可能还有其他方法可以实现上述目标,但这对我有用。


查看完整回答
反对 回复 2019-09-19
  • 3 回答
  • 0 关注
  • 2716 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信