gpt4 book ai didi

node.js - 创建用于 Node.js 的 SSL 证书

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:44 25 4
gpt4 key购买 nike

我需要在 https 协议(protocol)上运行本地 Express 服务器。我使用了 this 中的说明网站和类似的。但是,当我尝试在浏览器中打开该页面时,出现 Your connection is not private 错误。当我从 Developer tools 打开 Security 选项卡时,我看到了 This site is missing a valid, trusted certificate (net::ERR_CERT_INVALID) 错误。当我尝试通过 Postman 发送请求时,我的服务器没有响应,curl 请求返回:

curl: (60) SSL certificate problem: unable to get local issuer certificate

服务器代码如下:

const app = require('express')();
const fs = require('fs');
const https = require('https');

const options = {
key: fs.readFileSync('./key.pem'),
cert: fs.readFileSync('./cert.pem')
};

app.get('/', (req, res) => {
res.send('hello world');
});

https
.createServer(options, app)
.listen(3000, '127.0.0.1', () => {
console.log('Run on: https://127.0.0.1:3000');
});

我已经使用下一个命令创建了证书:

$ openssl req -nodes -sha256 -new -x509 -keyout key.pem -out cert.pem -days 365 -config req.cnf

其中req.cnf文件内容如下:

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = VA
L = SomeCity
O = MyCompany
OU = MyDivision
CN = 127.0.0.1:3000
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = IP:127.0.0.1:3000

我也尝试使用 443 端口,但不幸的是,我遇到了同样的错误。此外,我尝试使用隐身模式打开页面 https://127.0.0.1:3000 - 什么也没发生 - 错误是一样的。

我的问题是:

  1. 我在创建证书时哪里出错了?
  2. 为什么我不能通过 Postman/curl 向我的服务器发送请求?

最佳答案

您创建的是一个 self-signed certificate ,默认情况下没有网络应用程序会接受它们,因为它们无法验证它们,因此它们假设更糟(MITM 攻击)。

如果你只需要这个用于本地检查那么你可以按照这个 Getting Chrome to accept self-signed localhost certificate

Postman 错误可能是 chrome 应用程序的等效错误。

关于node.js - 创建用于 Node.js 的 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55557001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com