上面的答案是不完整的。我花了很多时间来使它工作,这太疯狂了。注意我未来的自我,这是您需要做的:
我正在使用带有Chrome 65的Windows10。Firefox运行良好-只需将localhost确认为安全例外即可。Chrome不会:
步骤1.在您的后端中,创建一个名为的文件夹security
。我们将在其中工作。
步骤2.创建一个req.cnf
具有以下内容的名称的请求配置文件(贷项到:@Anshul)
req.cnf:
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = Country initials like US, RO, GE
ST = State
L = Location
O = Organization Name
OU = Organizational Unit
CN = www.localhost.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.localhost.com
DNS.2 = localhost.com
DNS.3 = localhost
有关此字段的说明在这里。
步骤3.导航到终端中的security文件夹,然后键入以下命令:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
步骤4.然后在security
文件夹之外,在您的express应用程序中执行以下操作:(贷记到@Diego Mello)
backend
/security
/server.js
server.js:
const express = require('express')
const app = express()
const https = require('https')
const fs = require('fs')
const port = 3000
app.get('/', (req, res) => {
res.send("IT'S WORKING!")
})
const httpsOptions = {
key: fs.readFileSync('./security/cert.key'),
cert: fs.readFileSync('./security/cert.pem')
}
const server = https.createServer(httpsOptions, app)
.listen(port, () => {
console.log('server running at ' + port)
})
步骤5.启动服务器,node server.js
然后转到https:// localhost:3000。
至此,我们已经安装了服务器。但是浏览器应该显示警告消息。
我们需要在chrome / windows证书存储区中将自签名证书注册为CA可信证书颁发机构。(Chrome也将其保存在Windows中,)
步骤6.在Chrome中打开Dev Tools,转到“安全”面板,然后单击“查看证书”。
步骤7.转到“详细信息”面板,单击“复制文件”,然后在出现“证书导出向导”时,如下所示单击“下一步”:
步骤8.保留DER编码,单击下一步,选择Browse
,将其放在易于访问的文件夹(如Desktop)上,并命名证书localhost.cer, then click Save and then Finish.
。您应该能够在桌面上看到您的证书。
步骤9打开chrome://settings/
通过在URL框中插入。在下面向下单击Advanced / Advanced Options
,然后向下滚动以查找Manage Certificates
。
步骤10.转到“受信任的根证书颁发机构”面板,然后单击“导入”。
我们将localhost.cer
在步骤8中导入刚刚完成导出的证书。
步骤11.单击浏览,找到localhost.cer
,保留默认值,然后单击多次-直到出现此警告,然后单击“是”。
步骤12.关闭所有内容,然后重新启动chrome。然后,转到https://localhost:3000
时应看到: