【问题标题】:"refused to connect" with https and let-encyrpt“拒绝连接”与 https 和letsencrypt
【发布时间】:2018-06-14 09:24:07
【问题描述】:

我已通过letsencrypt.org 成功为我的网站创建了SSL 证书和密钥。我将它们上传到服务器上的一个文件夹中。启动服务器时我没有收到任何错误。

但是当我尝试使用 https:// 在浏览器中加载网站时,我收到“拒绝连接”错误。

这是我用来创建 https 服务器的代码:

'use strict';

const express = require('express');
const fs =  require('fs');
const http=  require('http');
const https=  require('https');
const path = require('path');

const PRIVATEKEY_PATH = path.join(__dirname, '../ssl/server.key');
const CERTIFICATE_PATH = path.join(__dirname, '../ssl/server.crt');

var privateKey  = fs.readFileSync(PRIVATEKEY_PATH, 'utf8');
var certificate = fs.readFileSync(CERTIFICATE_PATH, 'utf8');
var credentials = {key: privateKey, cert: certificate};

// Constants
const PORT = process.env.PORT || 8080;
const HOST = '0.0.0.0';

const CLIENT_BUILD_PATH = path.join(__dirname, '../../300meter.ch/build');

// App
const app = express();

// Static files
app.use(express.static(CLIENT_BUILD_PATH));

//ssh

var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);

// All remaining requests return the React app, so it can handle routing.
app.get('*', function(request, response) {
  response.sendFile(path.join(CLIENT_BUILD_PATH, 'index.html'));
});

httpServer.listen(PORT, HOST);
httpsServer.listen(8443, HOST);

如果有人可以帮助我,那就太棒了。谢谢!

【问题讨论】:

  • 根据我的经验,https 端口通常设置为 443。我还为我的 express 应用程序使用了letsencrypt,但我设置了一个 nginx 反向代理,它将 http/https 请求重定向到我的应用程序侦听端口 3000。也许您也可以尝试一下

标签: node.js express ssl https lets-encrypt


【解决方案1】:

当您指定https://example.com 时,客户端连接到端口 443。您的 SSL 服务器没有在端口 443 上运行。您的服务器在端口 8443 上运行。

您需要在 URL 中指定 https://example.com:8443/

【讨论】:

  • 谢谢。它现在有效,但我的证书有一些问题。挂锁未出现,浏览器提示该站点不安全。
  • 在 Chrome、Edge 等中,您可以按 F12 启用调试器。然后按 CTRL-F5 重新加载页面。您在调试器中看到任何警告吗?修复那些。这通常是由于您的 HTML 内容通过 HTTP 链接而不是 HTTPS 引用了其他对象(CSS、JS、...)。
猜你喜欢
  • 2014-11-17
  • 2014-12-10
  • 1970-01-01
  • 2023-04-03
  • 2021-01-16
  • 1970-01-01
  • 2015-09-09
  • 2013-08-17
  • 1970-01-01
相关资源
最近更新 更多