以下是使其正常工作的简单步骤(在c#7.0控制台应用程序、vs2022、win10中测试通过)
使用HTTPListener与HTTPS
- VS:c# httplistener项目,添加
listener.Prefixes.Add($"https://192.168.1.xxx:4443/");
*或其他ip/port
- 浏览器:尝试连接,出现错误:"安全连接失败:错误代码:PR_CONNECT_RESET_ERROR"
- PowerShell(以管理员身份运行)使用下面的代码片段获取certhash:
$certs = Get-ChildItem -Path Cert:\LocalMachine\My
foreach ($cert in $certs) {
$thumbprint = $cert.Thumbprint
$appid = [System.Guid]::NewGuid()
Write-Host "Certificate certhash: $thumbprint"
}
选择其中一个(通常第二个是正确的?)
"appid"来自您的VS Studio *.sln解决方案文件,SolutionGuid =
命令提示符(以管理员身份):netsh http add sslcert ipport=0.0.0.0:4443 certhash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx appid={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
浏览器测试重新加载:
https://192.168.1.xxx:4443
浏览器:关于不安全证书的警告(ERR_CERT_AUTHORITY_INVALID),点击高级,接受并继续
完成!
可选项:
打开防火墙端口以接受传入的TCP 4443(如果您希望其他局域网中的计算机连接到您的Web服务器)
卸载:
命令提示符(以管理员身份):netsh http delete sslcert ipport=0.0.0.0:4443
故障排除:
SSL证书添加失败,错误:1312 指定的登录会话不存在。可能已经被终止。
使用netsh命令时,certhash不正确。尝试使用返回列表中的其他值。
参数不正确。
在netsh命令中,不要使用引号或单引号来表示appid='{...}'。
安全连接失败:错误代码:证书类型未经批准用于应用程序,SEC_ERROR_INADEQUATE_CERT_TYPE。
使用错误的appid(从powershell列表中获取),请使用另一个。
资源
链接到gist
https://gist.github.com/unitycoder/ec217d20eecc2dfaf8d316acd8c3c5c5。