代码之家  ›  专栏  ›  技术社区  ›  Matelutex

nodejs应用程序和带证书的https

  •  -1
  • Matelutex  · 技术社区  · 6 年前

    我想征求你的意见。我不熟悉HTTPS和证书。我有自己的小应用程序,可以在nodejs上工作。

    我的包.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 回复  |  直到 6 年前
        1
  •  1
  •   Akash Babu Alex Stoicuta    6 年前

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

        2
  •  0
  •   Matelutex    6 年前

    总结:

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