OpenShift NodeJS应用程序上的证书|SSL无效



以下是我正在使用的内容:

  • NodeJS/Express应用程序
  • OpenShift环境(企业帐户)
  • 通过HTTP工作
  • HTTPS上的证书信任错误
  • 使用OpenShift提供的默认通配符证书
  • 如果我手动接受浏览器引发的异常,则开始工作
  • 最新快递

Server.js看起来像:

var express = require("express"),
    app = express(),
    IP = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1",
    PORT = process.env.OPENSHIFT_NODEJS_PORT || 8888; // its 8080 on openshift.  i use 8888 only on my local environment for irrelevant reasons

// we sometimes need special endpoints that arent files
app.get("/something-special", function(req, res) {
  res.send("something special");
});
// but typically it's static files
app.use(express.static(__dirname + "/public"));

// go!
app.listen(PORT, IP);

当我去https://myserver/file.js(位于/public/file.js中),我收到一个错误,说证书不可信。

我不太了解证书,也几乎不了解Node。这是一个学习项目,所以我试图在不改变课程的情况下解决我遇到的所有问题。

我已经尝试了我能想到的一切,包括:

  • 不同SO上推荐的app.enable("信任商店")
  • 简化我的Node应用程序并使用req.secure强制HTTPS

您可以尝试使用https://appname-yourdomainname.rhcloud.com/URL的版本。基础数字证书是*.rhcloud.com,由"Geotrust SSL CA"颁发。如果这样做,就不会出现与证书相关的错误,因为他们将基于通配符的证书应用于服务器。

我不确定免费版本的主机是否允许提供/绑定私人SSL。。。是的,您需要Bronze或更好的版本才能为您的应用程序提供私有SSL。Bummer

很可能发生的情况是,您正试图在自定义域中使用*.rhcloud.com通配符ssl证书,但这不起作用。OpenShift为您提供与您的app-domain.rhcloud.com地址匹配的ssl证书。如果您想在自定义域中正确使用SSL,则需要为您的域名获取(或购买)自定义SSL证书。你可以在很多公司在线获得,也可以在这里免费获得:https://www.startssl.com

此外,在SSL到达您的设备之前,它会在代理上终止。查看开发人员中心的这篇文章,了解有关其工作原理的更多信息:https://developers.openshift.com/en/managing-port-binding-routing.html

最新更新