以上答案仅部分正确。我花了很多时间让它工作,真是疯狂。提醒未来的自己,以下是需要做的:
我正在使用 Windows 10 和 Chrome 65,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。在终端中导航到安全文件夹并输入以下命令:
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。
此时我们已经设置好了服务器。但浏览器应会显示警告消息。
我们需要将自签名证书注册为受信任的 CA 证书颁发机构,并存储在 chrome/windows 证书存储中。(Chrome 还会将其保存在 Windows 中)
步骤6。 在 Chrome 中打开 Dev Tools,进入 Security 面板,然后单击 View Certificate。
![enter image description here](https://istack.dev59.com/yLoaC.webp)
步骤7。 进入详细信息面板,单击“复制文件”,然后出现证书导出向导时,按以下方式单击下一步:
![go to details - copy file - next on export wizard](https://istack.dev59.com/YP3x2.webp)
步骤8。 保留 DER 编码,单击下一步,选择Browse
,将其放置在易于访问的文件夹(如桌面)中,并将证书命名为localhost.cer
,然后单击保存,再单击完成。您应该能够在桌面上看到您的证书。
步骤9。 通过在 URL 箱中插入它来打开chrome://settings/
。向下滚动,然后单击“高级/高级选项”,查找“管理证书”。
![choose manage certificates](https://istack.dev59.com/wtjqK.webp)
步骤10。 进入受信任的根证书颁发机构面板,然后单击导入。
![Go to Trusted Root Certification Authorities panel, and click import](https://istack.dev59.com/7dnLZ.webp)
我们将导入刚刚在步骤8中导出的localhost.cer
证书。
步骤11。 单击浏览,找到localhost.cer
,保留默认值,单击下一步多次直到出现此警告,然后单击是。
![confirm security exception](https://istack.dev59.com/ugHEL.webp)
步骤12。 关闭所有内容,并重新启动 Chrome。然后,当转到https://localhost:3000
时,您应该会看到:
![gotta love the green](https://istack.dev59.com/fyRaw.webp)