![](/img/trans.png)
[英]ERR_CERT_COMMON_NAME_INVALID from jQuery Using Reverse Proxy
[英]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.