尝试按照各种说明创建与 localhost 一起使用的自签名证书,大多数说明似乎是针对 IIS 的,但我正在尝试使用 Nodejs/Express。它们都不能正常工作,因为在安装证书时,它不受信任。
有人可以提供可以做到这一点的工作流程吗? 我可以安装证书,但 我无法让证书在 chrome (v32) 或 IE (v10) 中受信任。
编辑:在评论中建议问题不是受信任的证书根。我通过 IE 安装了证书,但它仍然不受信任。
上面的答案是片面的。我花了这么多时间让这个工作,这太疯狂了。注意我未来的自己,这是你需要做的:
我正在使用 Chrome 65 在 Windows 10 上工作。Firefox 表现良好 - 只需将 localhost 确认为安全例外,它就会起作用。Chrome 不会:
步骤 1. 在您的后端,创建一个名为security. 我们将在里面工作。
security
步骤 2. 创建一个请求配置文件,命名req.cnf为以下内容
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。
node server.js
至此,我们已经完成了服务器设置。但浏览器应显示警告消息。
我们需要在 chrome/windows 证书存储中注册我们的自签名证书,作为 CA 信任的证书颁发机构。 (chrome也将它保存在windows中,)
步骤 6. 在 chrome 中打开开发工具,转到安全面板,然后单击查看证书。
步骤 7. 转到详细信息面板,单击复制文件,然后当证书导出向导出现时,单击下一步,如下所示:
步骤 8. 离开 DER 编码,点击下一步,选择Browse,把它放在一个易于访问的文件夹,如 Desktop,并命名证书localhost.cer, then click Save and then Finish.。您应该能够在 Desktop 上看到您的证书。
Browse
localhost.cer, then click Save and then Finish.
步骤 9。 通过将其插入 url 框中打开chrome://settings/。在下方,单击Advanced / Advanced Options,然后向下滚动以找到Manage Certificates。
chrome://settings/
Advanced / Advanced Options
Manage Certificates
步骤 10. 转到受信任的根证书颁发机构面板,然后单击导入。
我们将导入localhost.cer刚刚在步骤 8 中导出的证书。
localhost.cer
步骤 11. 点击浏览,找到localhost.cer,保留默认值点击下一步 - 直到出现此警告,点击是。
第 12 步。 关闭所有内容,然后重新启动 chrome。然后,去的时候https://localhost:3000你应该看到:
https://localhost:3000