Nodejs架設Server方法差異

  1. 必須先有的東西
  2. Code
  3. 如何將SSL Handshake的過程印出來

必須先有的東西

  • SSL Certificate
  • CA Certificate
  • Private Key

Code

import express from 'express'
import https from 'https'
import fs from 'fs'

const app = express()

const options = {
  key: fs.readFileSync('./server_private_key.pem'),
  ca: [fs.readFileSync('./ca_certificate.pem')],
  cert: fs.readFileSync('./server_ssl_certificate.pem'),
  requestCert: true,
  rejectUnauthorized: true
};

https.createServer(options, function (req, res) {
  console.log('Start https server on http://127.0.0.1:443')
}).listen(443);

pfx: SSL 使用的证书,私钥,和证书Certificate, 默认 null.
key: SSL 使用的私钥. 默认 null.
passphrase: 私钥或 pfx 的口令字符串. 默认 null.
cert: 所用公有 x509 证书. 默认 null.
ca: 用于检查远程主机的证书颁发机构或包含一系列证书颁发机构的数组。
ciphers: 描述要使用或排除的密码的字符串,格式请参阅 http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT
rejectUnauthorized: 如为 true 则服务器证书会使用所给 CA 列表验证。如果验证失败则会触发 error 事件。验证过程发生于连接层,在 HTTP 请求发送之前。缺省为 true.
secureProtocol: 所用的 SSL 方法,比如 TLSv1_method 强制使用 TLS version 1。可取值取决于您安装的 OpenSSL, 和定义于 SSL_METHODS 的常量。

https://nodejs.org/api/https.html#https_https_createserver_options_requestlistener

如何將SSL Handshake的過程印出來

NODE_DEBUG=’tls,https’ node server.js