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

以下是我正在处理的内容:

  • 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('trust store')
  • 简化我的Node应用程序,并使用req.secure强制使用HTTPS

您可以尝试使用url的https://appname-yourdomainname.rhcloud.com/版本访问您的应用。 底层的数字证书是* .rhcloud.com,由“Geotrust SSL CA”发行。 如果你这样做,你不会得到与证书有关的错误,因为他们将基于通配符的证书应用到服务器上。

我不确定主机的免费版本是否允许私人SSL提供/绑定…是的,你需要铜牌或更好的允许私人SSL为您的应用程序。 长号

更可能发生的情况是您正在尝试将* .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