如何在Node.js中使用HTTPS

时间:2014-04-11 00:49:29

标签: node.js http ssl https openssl

我对HTTPS,SSL等几乎没有经验

我想知道如何在HTTPS中使用Node.js.我知道如何使用node.js,但使用HTTPS时会出错。

我想我需要安装一些东西(openSSL?)。我想告诉所有我必须安装在Windows 8.1计算机上的东西(不,我不想得到任何形式的linux。也没有cygwin),以便使用node.js HTTPS服务器。< / p>

我不需要有付费证书,我只需要让它工作。它没有收到浏览器的请求,所以我不关心付费证书。

1 个答案:

答案 0 :(得分:2)

在您的系统上安装了node.js后,只需按照以下步骤操作即可运行支持HTTP和HTTPS的基本Web服务器!

第1步:构建证书颁发机构

  1. 创建要存储密钥的文件夹。证书:

    mkdir conf

    1. 转到该目录:

      cd conf

      1. 抓取此ca.cnf文件以用作配置快捷方式:

        wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf

        1. 使用此配置创建新的证书颁发机构:

          openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem

          1. 现在我们在ca-key.pemca-cert.pem拥有我们的证书颁发机构,让我们为服务器生成一个私钥:

            openssl genrsa -out key.pem 4096

            1. 抓取此server.cnf文件以用作配置快捷方式:

              wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf

              1. 使用此配置生成证书签名请求:

                openssl req -new -config server.cnf -key key.pem -out csr.pem

                1. 签署请求:

                  openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem

                2. 步骤2:将证书安装为根证书

                  1. 将证书复制到根证书的文件夹:

                    sudo cp ca-crt.pem /usr/local/share/ca-certificates/ca-crt.pem

                    1. 更新CA商店:

                      sudo update-ca-certificates

                    2. 步骤3:启动节点服务器

                      首先,确保server.js的代码看起来像这样:

                      var http = require('http');
                      var https = require('https');
                      var fs = require('fs');
                      
                      var httpsOptions = {
                          key: fs.readFileSync('/path/to/HTTPS/server-key.pem'),
                          cert: fs.readFileSync('/path/to/HTTPS/server-crt.pem')
                      };
                      
                      var app = function (req, res) {
                        res.writeHead(200);
                        res.end("hello world\n");
                      }
                      
                      http.createServer(app).listen(8888);
                      https.createServer(httpsOptions, app).listen(4433);
                      
                      1. 转到server.js所在的目录:

                        cd /path/to

                        1. 运行server.js

                          node server.js