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證書,返回你的應用頁面並重新加載。