我做了什么

我做了什么

我做了什么

我曾经certbot证明过我拥有我的域名,这生成了几个.pem文件。证书列在这里:https://certbot.eff.org/docs/using.html#where-are-my-certificates

我发现这个帖子这很合理,也符合我从谷歌搜索获得的所有其他信息,但是当我执行此操作并运行节点时,我无法使用 https 连接到我的网站。Http 一如既往地正常工作。

我的服务器是 express.js + node.js,我没有使用像 nginx 这样的反向代理。它在 Google Cloud Platform 上的 Ubuntu 上运行。

相关代码为:

var http = require('http');
var https = require('https');
var privateKey  = fs.readFileSync('/etc/letsencrypt/live/troywolters.com/privkey.pem', 'utf8');
var certificate = fs.readFileSync('/etc/letsencrypt/live/troywolters.com/fullchain.pem', 'utf8');
var credentials = {key: privateKey, cert: certificate};
var app = express();

// Lots of other express stuff (app.use()'s)

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

什么不起作用

当我尝试使用以下方式连接到我的网站时https://troywolters.com连接超时,什么都没发生。我做错了什么?

答案1

问题的答案是我的托管平台(Google Cloud Platform)在默认配置中不允许端口 443 通过防火墙。运行

gcloud compute firewall-rules create allow-https --description "Incoming https allowed." --allow tcp:443

允许通过端口 443 传入流量并修复该问题。

感谢迈克尔·汉普顿提供的提示。

相关内容