通过 HTTPS 远程连接到 VS ASP.NET 项目

问题描述 投票:0回答:1

对于任何地方可能出现的愚蠢行为,我深表歉意 - 这是我第一次尝试使用 HTTPS,虽然我对它是什么有基本的了解,但我仍然迷失在细微差别中。

我正在尝试使用 Visual Studio 中的 ASP.NET Web API 模板开发自己的 API 应用程序。

据我了解,Kestrel 或 Visual Studio 本身在第一次启动时为 localhost 生成了一个证书,我成功批准了该证书,并且我的应用程序通过 localhost:7191 处的安全连接打开,这是 VS 中项目的默认 HTTPS 端口,使用这个模板。

但是,远程连接,无论是来自外部站点的 AJAX 请求(我正在使用我的托管,它有自己从托管提供商处购买的证书) - 返回 ERR_CERT_COMMON_NAME_INVALID,表明该证书是为本地主机颁发的,而不是为特定 IP 地址,例如 xx.xx.xx.xx。只需将地址输入浏览器的地址栏 - 当然,会导致相同的错误。

是的,我知道您可以“无论如何打开它”(但不能在脚本请求的情况下)或使用 HTTP - 但这并不有趣。

我不太确定我需要做什么。

我使用购买的证书将其中一个域的 A 记录更改为运行 VS 项目的计算机的 IP 地址 - 没有任何变化。

我使用 OpenSSL 为我的 IP 地址生成了 .pem 和 .pfx 文件,并尝试按照 ChatGPT 的建议以多种方式将它们集成到我的代码中 - 例如使用 UseCertificateForwarding();和 context.Connection.ClientCertificate;或者通过在 HTTPS 设置中的 launchSettings.json 中强制设置 "sslCert": "certificate.pfx" - 但由于这是我第一次尝试 HTTPS,因此在不完全理解其工作原理的情况下,我很难提出正确的问题。

无论如何,这些尝试显然不起作用,因为无论我如何尝试,每次访问该地址都会显示本地主机证书和 ERR_CERT_COMMON_NAME_INVALID。

我只是错误地连接了证书吗? 我真的可以获得连接 IP 地址而不是域的证书吗? 如果不是,连接域的想法是否正确? 那么,Visual Studio 或 Kestrel 设置中是否有正在使用的证书 - 这正是 localhost 的证书? 还是我理解错了?

谢谢!

asp.net .net visual-studio ssl https
1个回答
0
投票

好的,我修好了。事实证明这非常简单。我需要获取我的一个域,该域已由受信任中心的托管颁发了证书(我使用了不必要的二级域,但我可以只添加一个子域,为其颁发证书),下载证书与密钥,使用 OpenSSL 编译 pfx,并将我的应用程序专门绑定到该域,而不是设置中的 localhost。当然,还要转发端口,这是不言而喻的。之后,HTTPS 连接开始正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.