node啟動(dòng)https服務(wù)

node.js可以在安裝了http-server后,在本地起服務(wù)。但只能啟動(dòng)http服務(wù),啟動(dòng)https服務(wù)需要密鑰和證書。

生成密鑰、證書

第一步,為服務(wù)器端和客戶端準(zhǔn)備公鑰、私鑰

// 生成服務(wù)器端私鑰
openssl genrsa -out server.key 1024
// 生成服務(wù)器端公鑰
openssl rsa -in server.key -pubout -out server.pem
// 生成客戶端私鑰
openssl genrsa -out client.key 1024
// 生成客戶端公鑰
openssl rsa -in client.key -pubout -out client.pem

第二步,生成 CA 證書

// 生成 CA 私鑰
openssl genrsa -out ca.key 1024
// X.509 Certificate Signing Request (CSR) Management.
openssl req -new -key ca.key -out ca.csr
// X.509 Certificate Data Management.
openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt

在執(zhí)行第二步時(shí)會(huì)出現(xiàn):

? keys openssl req -new -key ca.key -out ca.csr
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.


Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:shanghai
Locality Name (eg, city) []:shanghai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My CA
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:

注意,這里的 Organization Name (eg, company) [Internet Widgits Pty Ltd]: 后面生成客戶端和服務(wù)器端證書的時(shí)候也需要填寫,不要寫成一樣的?。?!可以隨意寫如:My CA, My Server, My Client。

然后 Common Name (e.g. server FQDN or YOUR name) []: 這一項(xiàng),是最后可以訪問的域名,我這里為了方便測(cè)試,寫成 localhost,如果是為了給我的網(wǎng)站生成證書,需要寫成 barretlee.com。

第三步,生成服務(wù)器端證書和客戶端證書

// 服務(wù)器端需要向 CA 機(jī)構(gòu)申請(qǐng)簽名證書,在申請(qǐng)簽名證書之前依然是創(chuàng)建自己的 CSR 文件  
openssl req -new -key server.key -out server.csr  
// 向自己的CA機(jī)構(gòu)申請(qǐng)證書,簽名過程需要CA的證書和私鑰參與,最終頒發(fā)一個(gè)帶有CA簽名的證書
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
// client 端
openssl req -new -key client.key -out client.csr
// client 端到 CA 簽名
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt

完成這三步后,文件夾下會(huì)有以下文件:

    ├── ca.crt
    ├── ca.csr
    ├── ca.key
    ├── ca.srl
    ├── client.crt
    ├── client.csr
    ├── client.key
    ├── client.pem
    ├── server.crt
    ├── server.csr
    ├── server.key
    └── server.pem

啟動(dòng)服務(wù)

將文件放到某個(gè)文件夾下,新建記事本start.bat。
將路徑指向想要發(fā)布的目錄,修改證書和秘鑰所在位置。

cd D:\workspace\project-foo\webapp
http-server --cert d:\openssl-keys\server.crt --key d:\openssl-keys\server.key --ssl --cors -p 443
適用場(chǎng)景:

對(duì)于前后端分離的開發(fā),如果頁面由后端做渲染,且頁面訪問為https協(xié)議,可以在聯(lián)調(diào)時(shí)候由前端起https服務(wù),后端host切至前端的IP地址,可以直接訪問前端的靜態(tài)資源。

參考: http://www.barretlee.com/blog/2015/10/05/how-to-build-a-https-server/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容