小编典典

为 localhost 创建一个受信任的自签名 SSL 证书(用于 Express/Node)

all

尝试按照各种说明创建与 localhost 一起使用的自签名证书,大多数说明似乎是针对 IIS 的,但我正在尝试使用
Nodejs/Express。它们都不能正常工作,因为在安装证书时,它不受信任。

有人可以提供可以做到这一点的工作流程吗? 我可以安装证书,但 我无法让证书在 chrome (v32) 或 IE (v10) 中受信任。

编辑:在评论中建议问题不是受信任的证书根。我通过 IE 安装了证书,但它仍然不受信任。


阅读 101

收藏
2022-08-24

共1个答案

小编典典

上面的答案是片面的。我花了这么多时间让这个工作,这太疯狂了。注意我未来的自己,这是你需要做的:

我正在使用 Chrome 65 在 Windows 10 上工作。Firefox 表现良好 - 只需将 localhost
确认为安全例外,它就会起作用。Chrome 不会:

步骤 1. 在您的后端,创建一个名为security. 我们将在里面工作。

步骤 2.
创建一个请求配置文件,命名req.cnf为以下内容

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

这个字段的解释是here

步骤 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

至此,我们已经完成了服务器设置。但浏览器应显示警告消息。

我们需要在 chrome/windows 证书存储中注册我们的自签名证书,作为 CA 信任的证书颁发机构。
(chrome也将它保存在windows中,)

步骤 6. 在 chrome 中打开开发工具,转到安全面板,然后单击查看证书。
在此处输入图像描述

步骤 7. 转到详细信息面板,单击复制文件,然后当证书导出向导出现时,单击下一步,如下所示:

转到详细信息 - 复制文件 -
导出向导下一步

步骤 8. 离开 DER 编码,点击下一步,选择Browse,把它放在一个易于访问的文件夹,如
Desktop,并命名证书localhost.cer, then click Save and then Finish.。您应该能够在 Desktop
上看到您的证书。

步骤 9。 通过将其插入 url 框中打开chrome://settings/。在下方,单击Advanced / Advanced Options,然后向下滚动以找到Manage Certificates

选择管理证书

步骤 10. 转到受信任的根证书颁发机构面板,然后单击导入。

转到受信任的根证书颁发机构面板,然后单击导入

我们将导入localhost.cer刚刚在步骤 8 中导出的证书。

步骤 11. 点击浏览,找到localhost.cer,保留默认值点击下一步 - 直到出现此警告,点击是。

确认安全异常

第 12 步。 关闭所有内容,然后重新启动 chrome。然后,去的时候https://localhost:3000你应该看到:
必须爱绿色

2022-08-24