创建React App:HTTPS和自签名证书

问题描述

我正在尝试在HTTPS模式下运行使用create-react-app模板创建的React应用:

set SSL_CRT_FILE=.cert/server.pfx&&set HTTPS=true&&npm start

我使用Power Shell创建了此证书。尽管有很多解释说明如何使用使用OpenSSL创建的证书运行react app,但由于不允许我在计算机上安装OpenSSL,这不是我的选择。

证书创建:

$cert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "localhost" -FriendlyName "MyCert" -NotAfter (Get-Date).AddYears(10)
$pwd = ConvertTo-securestring -String `my_password' -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath C:\my_react_app\.cert\server.pfx -Password $pwd

然后,我将此证书导入到“个人证书”中,并将其复制到“受信任的根证书颁发机构”。但是,当我在浏览器中打开项目时,我得到了NET::ERR_CERT_AUTHORITY_INVALID

我做错了什么?

p.s。

导出为.cer文件也不起作用:

Export-Certificate -Cert $cert -FilePath C:\my_react_app\.cert\server.cer

解决方法

PowerShell中的以下命令(以管理员身份运行)将创建根证书及其关联的受信任证书:

1。。我们创建一个新的根受信任证书:

$rootCert = New-SelfSignedCertificate -Subject 'CN=TestRootCA,O=TestRootCA,OU=TestRootCA' -KeyExportPolicy Exportable -KeyUsage CertSign,CRLSign,DigitalSignature -KeyLength 2048 -KeyUsageProperty All -KeyAlgorithm 'RSA' -HashAlgorithm 'SHA256'  -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider'

2。。我们从受信任的根证书链创建证书:

New-SelfSignedCertificate -DnsName "localhost" -FriendlyName "MyCert" -CertStoreLocation "cert:\LocalMachine\My" -Signer $rootCert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1") -Provider "Microsoft Strong Cryptographic Provider" -HashAlgorithm "SHA256" -NotAfter (Get-Date).AddYears(10)

3。。我们复制上一条命令返回的指纹

4。(如果需要),我们删除了上一个关联的ip / port / cert:

netsh http delete sslcert ipport=0.0.0.0:3002

5。。我们将新证书与任何ip和您的端口(例如3002)关联(appid值无关紧要,是任何有效的GUID):

netsh http add sslcert ipport=0.0.0.0:3002 appid='{214124cd-d05b-4309-9af9-9caa44b2b74a}' certhash=here_the_copied_thumbprint

6。。现在,您必须将TestRootCAPersonal/Certificates文件夹拖放到Trusted Root Certification Authorities/Certificates

这些命令还解决了Google Chrome稍后返回的错误 ERR_CERT_WEAK_SIGNATURE_ALGORITHM ,因为证书是使用SHA256而不是SHA1创建的。