簡體   English   中英

NodeJS Express 反向代理 TLS_CERT_ALTNAME_INVALID 錯誤

[英]NodeJS Express reverse proxy TLS_CERT_ALTNAME_INVALID error

我的端點上有一個反向代理,如下所示:

var express = require('express');
var app = express();
var httpProxy = require('http-proxy');
var apiProxy = httpProxy.createProxyServer();
var serverOne = 'https://idena.navarra.es/ogc/wms?';

app.all('/idena', function (req, res) {
  apiProxy.web(req, res, {target: serverOne});
});

app.listen(3000, function () {
  console.log('Working!');
});

當收到對/idena的請求時,服務器會拋出如下異常:

錯誤 [ERR_TLS_CERT_ALTNAME_INVALID]:主機名/IP 與證書的替代名稱不匹配:主機:本地主機。 不在證書的 altnames: DNS:idena.navarra.es, DNS: www.idena.navarra.es at Object.checkServerIdentity (tls.js:235:17) at TLSSocket.onConnectSecure (_tls_wrap.js:1061:27)在 TLSSocket.emit (events.js:189:13) 在 TLSSocket._finishInit (_tls_wrap.js:633:8)

我該如何解決這個問題? 猜測是由於https但不知道如何避免這種情況,謝謝!

雖然錯誤是關於 SSL 證書和域名不匹配,但在 http-proxy 模塊中,當您的服務器是 HTTP 並且目標是 HTTPS 時,該錯誤通常會表現出來。

您可以通過更改changeOrigin標志來避免此錯誤。

 const proxy = httpProxy.createProxyServer(); proxy.web(req, res, { changeOrigin: true, target: https://example.com:3000, });

如果您的服務器是 HTTPS 而目標服務器也是 HTTPS,您應該包含 SSL 證書

httpProxy.createServer({ ssl: { key: fs.readFileSync('valid-ssl-key.pem', 'utf8'), cert: fs.readFileSync('valid-ssl-cert.pem', 'utf8') }, target: 'https://example.com:3000', secure: true }).listen(443);

請看這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM