使用 CloudFlare 的 Nodejs SSL 无法通过 https 工作

Chi*_* V2 3 https ssl-certificate node.js socket.io cloudflare

所以我遇到的问题是,当 server.js 使用 https 时,客户端将无法与 server.js 连接。

如果我转到“https://mydomainame.com”,除了勇敢的浏览器之外,我会在所有其他浏览器的控制台中收到此错误 index.js:83 GET https://serverip:8081/socket.io/?EIO=3&transport=轮询&t=NK0oCD6 net::ERR_CERT_AUTHORITY_INVALID 在此输入图像描述

(涂黑的是服务器的IP地址)奇怪的是,在brave浏览器中,域名更改为“http://mydomainname.com”,然后客户端连接到server.js
在此输入图像描述

我正在使用免费的 Cloudflare 和完整的端到端加密 在此输入图像描述

server.js代码:

var express = require('express'),
https = require('https');
var app = express();
var fs = require('fs');
var httpsOptions = { 
    key: fs.readFileSync('/var/www/ssl/sitename.com.key'),
    cert: fs.readFileSync('/var/www/ssl/sitename.com.pem')};
var server = https.createServer(httpsOptions,app);
var io = require('socket.io').listen(server);

const port = 8081;
server.listen(port);
Run Code Online (Sandbox Code Playgroud)

和client.js连接代码:

socket = io.connect('https://serverip:8081', {secure: true});
Run Code Online (Sandbox Code Playgroud)

我对服务器和 nodejs 代码使用相同的原始证书。服务器使用 Apache2 和 PHPMyAdmin,并配置为使域仅使用 https 工作。

我在某处读到 Cloudflare 无法使用 443 以外的其他端口和其他端口,但我并没有真正理解它,而且我无法让 server.js 在端口 443 上工作。

我很感谢我能得到的任何信息或帮助!:)

Chi*_* V2 5

所以我想通了,非常感谢 Eric Wong 指出了我尝试使用其 IP 连接到服务器时未通过 Cloudflare 的最大问题。

然后在这篇文章“识别与 Cloudflare 代理兼容的网络端口” 中,您可以看到 Cloudflare 允许连接哪些端口,然后,我更改了代码以使用 https 端口 8443。

socket = io.connect('https://domainname.com:8443',{secure: true});
Run Code Online (Sandbox Code Playgroud)

然后我唯一要做的就是转发新端口,一切正常!