node.js搭建https服務器


HTTPS簡介

  HTTPS:(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。另外在https的站點中是不允許請求http的接口的。

HTTPS和HTTP的區別

  • https協議需要到ca申請證書,一般免費證書很少,需要交費。

  • http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。

  • http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。

  • http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。

openssl生成證書文件

  只要安裝了git客戶端就會有openssl

  檢測openssl是否安裝

openssl version -a

    接下來開始生成證書:

#1、生成私鑰key文件:
openssl genrsa -out privatekey.pem 1024

#2、通過私鑰生成CSR證書簽名  (需要填一些信息、可直接回車)
openssl req -new -key privatekey.pem -out certrequest.csr

#3、通過私鑰和證書簽名生成證書文件 
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem

執行完第三條命令會看到:

  Signature ok

表示生成成功,最終看到如下三個文件

  • privatekey.pem: 私鑰

  • certrequest.csr: CSR證書簽名

  • certificate.pem: 證書文件

Node.js修改啟動文件:app.js

~ vi app.js

//最下面
var https = require('https')
    ,fs = require("fs");

var options = {
    key: fs.readFileSync('./privatekey.pem'),
    cert: fs.readFileSync('./certificate.pem')
};

https.createServer(options, app).listen(3011, function () {
    console.log('Https server listening on port ' + 3011);
});

啟動服務器:

  Express server listening on port 3000

  Https server listening on port 3011

常見問題:

1、Failed to load resource: net::ERR_INSECURE_RESPONSE

   這個是因為你用的證書不正規,讓瀏覽器給攔截掉了,打開你的控制台並點擊里面的URL。它將帶你進入API頁面,然后在頁面中接受SSL證書,返回你的應用頁面並重新加載。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM