我需要在https
协议上运行本地Express服务器。我使用了this网站和类似网站上的说明。但是,当我尝试在浏览器中打开页面时,出现Your connection is not private
错误。当我从Security
打开Developer tools
标签时,看到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
-什么也没发生-错误是相同的。
我的问题是:
答案 0 :(得分:0)
您创建的是self-signed certificate,默认情况下,任何网络应用程序都不会接受它们,因为它们无法验证它们,因此,他们认为情况更糟(MITM攻击)。
如果您只需要进行本地检查,则可以按照此操作 Getting Chrome to accept self-signed localhost certificate
邮递员错误可能与Chrome应用程序等效。