建立HTTPS連線

建立HTTPS連線

使用Git內建的openssl產生憑證

安裝好Git Windows版本就有內建的OpenSSL工具

路徑(依照自己當初安裝的位置):C:\Program Files\Git\usr\bin\openssl.exe

接著在這個資料夾建立一個ssl.conf設定檔

[req]
prompt = no
default_md = sha256
default_bits = 2048
distinguished_name = dn
x509_extensions = v3_req
[dn]
C = TW
ST = Taiwan
L = Taipei
O = <公司名稱>.
OU = <部門>
emailAddress = admin@example.com
CN = <憑證名稱,可設定中文>
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.localhost
DNS.2 = localhost
IP.1 =自己的區網IP

透過以下命令建立私密金鑰與憑證檔案

openssl req -x509 -new -nodes -sha256 -utf8 -days 365 -newkey rsa:2048 -keyout server.pem -out server.crt -config ssl.conf

建立好之後將產出的私密金鑰(server.key)與憑證檔案(server.crt)移動到NodeJS的專案資料夾

Express建立HTTPS

首先先安裝https module

npm i https

引入https模組與設置金鑰

const https=require('https);
const options={
   key:fs.readFileSync('server.pem'),
   cert:fs.readFileSync('server.crt')
}

使用https建立server

https.createServer(options,app).listen(3000,()=>console.log('https start!'));

完整程式碼

const https=require('https');
const fs=require('fs');
const express=require('express');
const app=express();
app.get('/',(req,res)=>res.send('https is ok'));
const options={
   key:fs.readFileSync('server.pem'),
   cert:fs.readFileSync('server.crt')
}
https.createServer(options,app).listen(3000,()=>console.log('https start!'));