模塊概覽
這個模塊的重要性,基本不用強調了。在網絡安全問題日益嚴峻的今天,網站采用HTTPS是個必然的趨勢。
在nodejs中,提供了 https 這個模塊來完成 HTTPS 相關功能。從官方文檔來看,跟 http 模塊用法非常相似。
本文主要包含兩部分:
篇幅所限,本文無法對 HTTPS協議 及 相關技術體系 做過多講解,有問題歡迎留言交流。
客戶端例子
跟http模塊的用法非常像,只不過請求的地址是https協議的而已,代碼如下:
var https = require('https');https.get('https://www.baidu.com', function(res){  console.log('status code: ' + res.statusCode);  console.log('headers: ' + res.headers);  res.on('data', function(data){    process.stdout.write(data);  });}).on('error', function(err){  console.error(err);});服務端例子
對外提供HTTPS服務,需要有HTTPS證書。如果你已經有了HTTPS證書,那么可以跳過證書生成的環節。如果沒有,可以參考如下步驟
生成證書
1、創建個目錄存放證書。
mkdir certcd cert
2、生成私鑰。
openssl genrsa -out chyingp-key.pem 2048
3、生成證書簽名請求(csr是 Certificate Signing Request的意思)。
openssl req -new / -sha256 -key chyingp-key.key.pem / -out chyingp-csr.pem / -subj "/C=CN/ST=Guandong/L=Shenzhen/O=YH Inc/CN=www.chyingp.com"
4、生成證書。
openssl x509 / -req -in chyingp-csr.pem / -signkey chyingp-key.pem / -out chyingp-cert.pem
HTTPS服務端
代碼如下:
var https = require('https');var fs = require('fs');var options = {  key: fs.readFileSync('./cert/chyingp-key.pem'), // 私鑰  cert: fs.readFileSync('./cert/chyingp-cert.pem') // 證書};var server = https.createServer(options, function(req, res){  res.end('這是來自HTTPS服務器的返回');});server.listen(3000);由于我并沒有 www.chyingp.com 這個域名,于是先配置本地host
127.0.0.1 www.chyingp.com
啟動服務,并在瀏覽器里訪問 http://www.chyingp.com:3000 。注意,瀏覽器會提示你證書不可靠,點擊 信任并繼續訪問 就行了。
進階例子:訪問安全證書不受信任的網站
這里以我們最喜愛的12306最為例子。當我們通過瀏覽器,訪問12306的購票頁面 https://kyfw.12306.cn/otn/regist/init 時,chrome會阻止我們訪問,這是因為,12306的證書是自己頒發的,chrome無法確認他的安全性。
對這種情況,可以有如下處理方式:
新聞熱點
疑難解答
圖片精選