【问题标题】:NodeJS application and HTTPS with CertificateNodeJS 应用程序和带有证书的 HTTPS
【发布时间】:2018-07-23 16:49:44
【问题描述】:

我想请教您的意见。我不熟悉 HTTPS 和证书。我有自己的适用于 Nodejs 的小型应用程序。

我的 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 start 并且我的应用程序正在运行 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')
});

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

此网站不安全

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

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

【问题讨论】:

    标签: node.js https ssl-certificate


    【解决方案1】:

    请访问Let's Encrypt。它为您提供免费的签名证书,其中 certbot 会在证书过期时自动更新。
    此外,我不建议从 Express 应用程序中提供证书,因为它会大大降低应用程序的性能。所以考虑使用nginx,它是一个反向代理负载均衡器,也可以提供HTTPS所需的证书。

    【讨论】:

    • 我可以使用免费证书吗?是否可以通过免费证书立即拥有安全网页(绿色)?在开始时?不手动安装证书?
    • @matley 是的,有可能
    【解决方案2】:

    总结:

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

    【讨论】:

      猜你喜欢
      • 2012-02-03
      • 2019-10-13
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多