windows 在package.json中设置SSL证书时对Visual Studio未启动做出React

beq87vna  于 2022-11-18  发布在  Windows
关注(0)|答案(1)|浏览(98)
  • 我有一个React.Js + .NET 6组合项目。
  • 当我运行应用程序时,Visual Studio启动了一个充当代理服务器的React开发服务器。NET WebAPI应用程序在不同的端口上运行
  • 两者都具有无效的SSL证书。
  • .NET应用程序运行于-https://localhost:7148/
  • React开发服务器(代理)运行于-https://localhost:44448

为了解决这个问题,我使用下面的dotnet命令创建了一个Dev证书。这个命令可以创建一个证书,信任它,还可以导出CERT及其私钥文件。

在此之后,当我运行我的.NET应用程序时,它成功地使用有效的SSL启动。我将这两个文件(CERT和KEY)复制到package.json所在的位置,并将其添加到package.json中

然而现在React开发服务器没有启动。我做错了什么?

如果我撤消对package.json的更改,SPA代理服务器将启动并重定向到https://localhost:44448,但是SSL被破坏,React的热重新加载也无法工作。
x1c4d 1x指令集

cngwdvgl

cngwdvgl1#

我已经找到了解决办法。在这里发帖帮助任何与同样问题斗争的人。

Windows上的逐步简易解决方案

1.安装适用于Windows的Git-https://gitforwindows.org/
1.然后后藤'C:\Program Files\Git\usr\bin'
1.使用以下内容创建新文件“req.cnf”并保存在上述位置

[req]
    distinguished_name = req_distinguished_name
    x509_extensions = v3_req
    prompt = no
    [req_distinguished_name]
    C = CA
    ST = ON
    L = Toronto
    O = MyCompany
    OU = MyDivision
    CN = localhost
    [v3_req]
    keyUsage = critical, digitalSignature, keyAgreement
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    [alt_names]
    DNS.1 = localhost 
    DNS.2 = www.mydomainname.com
    DNS.3 = mydomainname.com

1.您可以在同一文件夹中找到openssl.exe
1.在上述位置以管理权限运行终端
1.执行命令:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt -config req.cnf -sha256
1.这将在同一位置生成2个文件。

  • server.crt
  • server.key

1.打开server.crt并单击安装
1.在向导中选择Local Machine
1.在下一步中,选择Place all certificate in the following store
1.单击“浏览”并选择存储-Trusted Root Certification Authorities
1.现在您的SSL证书在您的PC上是可信的
1.后藤React项目,进入package.json文件所在的文件夹
1.在此处创建新文件夹ssl
1.将以上2个文件server.crtserver.key粘贴到文件夹中
1.打开package.json并将其编辑为:

"scripts": {
    "prestart": "node aspnetcore-https && node aspnetcore-react",
    "start": "set HTTPS=true&&set SSL_CRT_FILE=./ssl/server.crt&&set SSL_KEY_FILE=./ssl/server.key&&react-scripts start",
    "build": "react-scripts build",
    "test": "cross-env CI=true react-scripts test --env=jsdom",
    "eject": "react-scripts eject",
    "lint": "eslint ./src/"
  },

1.关闭、清除缓存、重新打开和重建项目
1.您已完成

相关问题