NodeJS应用程序和带有证书的HTTPS

时间:2018-07-23 16:49:44

标签: node.js https ssl-certificate

我想问你一些建议。我对HTTPS和证书不熟悉。我有自己的可在Node.js上运行的小型应用程序。

我的package.json:

{
  "name": "chatwidgethttps",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node server/ index.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.16.3"
  }
}

npm启动,我的应用正在https://localhost:3333上运行。我将此URL放到外部LiveChat平台(在https下),因为我的应用程序应充当实时聊天窗口小部件。所有数据都必须得到保护(所有数据都是秘密的)

我的问题是在这种情况下最好的方法是什么-我需要自签名证书吗? 每个想要使用我的应用程序的人都必须安装证书吗?如果是,怎么办? 如何使证书自动安装?

到目前为止,我已经尝试过类似的事情:

const express = require('express')
const fs = require('fs')
const https = require('https')
const path = require('path')

const app = express();
const directoryToServe = 'client'
const port = 3333

app.use('/', express.static(path.join(__dirname, '..', directoryToServe)))

const httpsOptions = {
    cert: fs.readFileSync(path.join(__dirname,'ssl','server.crt')),
    key: fs.readFileSync(path.join(__dirname,'ssl','server.key'))
};

https.createServer(httpsOptions,app).listen(port, function() {
    console.log('Server started')
});

数百个教程中的一个说,毕竟我必须在浏览器上安装我的public server.crt证书,但是它不起作用-在浏览器上,我仍然看到红色文本“不安全”。在Firefox或IE上,我的应用程序完全不可见-我收到消息:

  

此网站不安全

     

这可能意味着有人试图欺骗您或窃取任何信息   您发送到服务器。您应该立即关闭此网站。

非常感谢您提供所有提示。

2 个答案:

答案 0 :(得分:1)

请访问Let's Encrypt。它为您提供了免费的签名证书,并带有certbot,它将在过期时自动续订证书。 我也不建议从Express应用程序提供证书,因为这会大大降低应用程序的性能。因此,请考虑使用nginx,它是反向代理负载平衡器,还可以提供HTTPS所需的证书。

答案 1 :(得分:0)

摘要:

我已经在本地测试过我的https应用程序,但遇到了不安全连接的问题。但是答案很简单- 我们要做的就是将应用程序上传到应该已经有一些证书的https服务器。