以下是我正在使用的内容:
- 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