【发布时间】:2017-08-18 02:54:23
【问题描述】:
我做了什么
我使用certbot 来证明我拥有我的域,该域生成了几个.pem 文件。证书在此处列出:https://certbot.eff.org/docs/using.html#where-are-my-certificates
我发现this post 很有意义,并且与我从谷歌搜索获得的所有其他信息相匹配,但是当我这样做并运行节点时,我无法使用 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 连接到我的站点时,连接超时并且没有任何反应。我做错了什么?
【问题讨论】:
-
当您远程访问您的服务器时,您能否向 443 端口发出本地请求,以确保您的 node.js 应用程序正确处理请求?如果是这样,那么您很可能有一个 iptable 问题/端口被阻止。如果没有,则说明您的应用有问题。
-
@Darkrum 抱歉,我该怎么做?我试着查看
ping,但它似乎不做https,只有ECHO,当我做curl --request https://troywolters.com时curl就挂了。当我做curl --request https://127.0.0.1虽然它说: curl: (51) SSL: certificate subject name (troywolters.com) does not match target host name '127.0.0.1' 所以也许这是一个好兆头?
标签: node.js ubuntu express https lets-encrypt