【发布时间】:2020-03-21 16:21:54
【问题描述】:
我正在使用 CRA(创建 React 应用程序)并使用以下 .env 文件将其绑定到 local.example.com:443:
HOST=local.example.com
PORT=443
HTTPS=true
这确保当我运行 CRA 脚手架时,它会尝试绑定到 local.example.com:443 并颁发自签名证书。我可以在浏览器中接受自签名并拥有一个支持 HTTPS 的本地站点。 HTTPS 是某些东西的必需品,例如Secure cookie 等,所以我需要它来进行本地开发以及远程部署。此外,proxy 可以设置为 example.com,以便本地前端在测试中使用远程后端,这是此设置的另一个动机。
这在主机名 (example.com) 没有 HSTS 时有效,但当它有时,CRA 创建的未接受的自签名证书被拒绝。为localhost 创建了证书,这是第一个问题,因为example.com 的HSTS 需要为example.com 颁发的证书才有效。火狐:
Firefox 不信任此站点,因为它使用的证书对 local.example.com 无效。该证书仅对以下名称有效:localhost、localhost.localdomain、lvh.me、*.lvh.me、[::1]、127.0.0.1、fe80::1
但最重要的是,由于它是自签名证书,除非用户首先接受它,否则浏览器将拒绝它,这可以在没有 HSTS 的情况下完成,因为关于自签名证书的警告页面允许这样做,但是使用 HSTS,会显示一个不同的警告页面(显示上面引用的错误的那个),它说 HSTS 不允许导航通过,你就完了。
在 Chrome 中,可以通过在 HSTS 警告页面上键入 letmein 来忽略 HSTS,这可行,但它在 Firefox 中不是解决方案,我想知道是否有更好的方法。
CRA 是否可以颁发证书,使其看起来好像是为 example.com 颁发的,以便 example.com 的 HSTS 接受它?我认为它仍然存在自签名的问题,但如果这是可能的,也许会显示关于自签名证书的警告页面,而不是用户将能够接受证书并继续?
【问题讨论】:
标签: https create-react-app hsts