背景:我有一个可通过 Windows 10 机器上的 Chrome 访问的网络应用程序。
我还在设备上安装了本机 Win10 应用程序。Web 应用程序通过在 IISExpress 中运行在机器上的本地 Web 服务将数据发送到 Win10 应用程序。
为了允许端口 44300 上的 HTTPS 通信,我通过 PowerShell 创建了一个自签名证书: New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddMonths(60 )
然后将其导入到“本地计算机\受信任的根证书\证书”
从 web 应用程序中,我向 win10 应用程序发送一个命令,如下所示: https://localhost:44300/CMTService.svc/JumpToAssignment?Param=Key=418584577
win10 应用程序正在轮询这些请求并接收消息。
问题:
不同版本的 Chrome 在接受自签名证书时表现不同。例如,版本 62、64 和 75 都接受证书并允许与 Web 服务通信。但是其他版本的 Chrome(如 76 和 78)会阻止通信。Chrome DevTools 中的安全选项卡将https://localhost:44300 显示为“未知/已取消”,我的请求失败并显示ERR_SSL_CLIENT_AUTH_CERT_NEEDED. 而在 Chrome 的工作版本中,我的 URL 显示在“安全来源”下。我唯一改变的是 Chrome 版本以获得这些不同的结果。
我尝试启用 Chrome 设置以允许本地主机的无效证书(chrome://flags/#allow-insecure-localhost)。这暂时有效,但在关闭并重新打开 chrome 后,我的请求再次开始失败,错误代码相同。
如果我将失败的 URL 之一粘贴到新的 Chrome 选项卡中,突然与我的网络应用程序中的本机应用程序的通信恢复正常。但它仅适用于该会话 …