提问人:Kiran Ramaswamy 提问时间:11/16/2023 最后编辑:Kiran Ramaswamy 更新时间:11/17/2023 访问量:38
Localhost 无响应,直到重新绑定自签名证书
Localhost unresponsive until re-binding self-signed certificate
问:
首先要说的是,我在下面描述的所有内容都完全超出了我的舒适区。我对这些东西是如何工作的一无所知,我只知道它确实有效。
通过 Visual Studio 2022 运行 IIS Express 时,我通常(每 ~4 小时)必须重新运行以下脚本,然后将新生成的证书拖入其中,以便让我的浏览器识别 localhost。如果我不运行脚本,我只会收到一条标准错误消息,指示我的浏览器无法识别我尝试浏览的地址。Trusted Root Certificate Authorities\Certificates
# port and appId are any randomly chosen port or guid
$name = 'localhost'
$port = 12345
$appId = '626feeb6-1ee1-4670-8d38-80b8139fe8ce'
Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -eq 'CN=' + $name } | Remove-Item
$thumb=(New-SelfSignedCertificate -DnsName $name -CertStoreLocation cert:\LocalMachine\My).Thumbprint.ToLower()
Invoke-Expression "netsh http delete sslcert ipport=0.0.0.0:$port"
Invoke-Expression "netsh http add sslcert ipport=0.0.0.0:$port appid='{$appId}' certhash=$thumb"
有谁知道我为什么需要这样做?
编辑1:
更多信息可帮助调试此内容。以下是运行的输出:netsh http show sslcert ipport=0.0.0.0:$port
这是向我展示的内容(第二个选项卡确认它具有与上面显示的指纹相同的指纹):certlm
答:
0赞
adam sranko
11/17/2023
#1
一个明显的猜测是证书刚刚过期。
可以在 powershell 中使用以下命令检查证书到期日期
Get-ChildItem Cert:\LocalMachine\My | ForEach-Object {
Write-Host "Certificate Subject: $($_.Subject)"
Write-Host "Thumbprint: $($_.Thumbprint)"
Write-Host "Expiration Date: $($_.NotAfter)"
Write-Host "------------------------"
}
如果它们没有过期,但它们仍然停止为您工作,那么恐怕我们需要更多信息。旧证书是否仍然存在,您只需将其替换为新证书,还是在 4 小时内从那里删除?Trusted Root Certificate Authorities\Certificates
评论
0赞
Kiran Ramaswamy
11/17/2023
嗨,亚当,谢谢你的建议。我运行了您列出的查询,并确认证书未过期。此外,我确认证书确实仍在证书存储中。最后,我检查了删除/重新创建证书后这两个屏幕显示的内容,除了它在重新创建后工作之外,我发现它们之间没有任何不同。我用一些截图更新了我的帖子,也许里面有有用的信息?
评论