一尘不染

Node.js HTTPS服务器ERR_EMPTY_RESPONSE

node.js

我使用创建了server.key和server.csr文件openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr。我使用startssl.com创建了一个SSL证书,该证书给了我一个证书文件。然后在我的node.js应用程序中读取密钥和证书文件:

var app = module.exports = express.createServer({
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.cert')
});

但是,现在我收到来自应用程序的空响应,即“未收到数据”消息。是什么原因造成的?我对SSL以及它的工作原理还很陌生,因此非常感谢您提供任何帮助。

更多信息:我在我的VPS服务器(生产服务器)上生成了两个文件,key和csr文件,现在我试图让它们在本地主机上工作(首先,在将代码提交到生产之前;我已经在进行git
commit之前测试它是否有效)。因此,这可能是由于我的本地主机(开发环境)与我的VPS服务器(生产环境)位于不同的域。可能是这样吗?如果是这样,如何在本地主机和生产环境使用相同证书的地方使用它?

或者,您是否建议我为开发环境创建另一个证书?我看到的唯一问题是,我的开发环境没有域,因为它是在本地完成的。为了简单起见,我宁愿使用相同的证书(即使那意味着一个损坏的锁图标或本地主机上的某个东西)。


阅读 304

收藏
2020-07-07

共1个答案

一尘不染

您可以通过使用连接到应用程序来解决错误curl --insecure --verbose。通常,您不应在多个主机上使用SSL证书。您可以制作一个自签名的文件以在本地进行测试,并在生产环境中使用startssl文件。但是无论如何,证书中的CN必须与用于连接到站点的主机名匹配,以避免讨厌的浏览器警告。您总是可以像这样为计算机组成一个域名sam.local,并将其放在/
etc / hosts文件中,并在自签名证书和浏览器地址栏中使用该域名。

2020-07-07