亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

Node.js進階之核心模塊https入門

2024-05-06 16:44:32
字體:
來源:轉載
供稿:網友

模塊概覽

這個模塊的重要性,基本不用強調了。在網絡安全問題日益嚴峻的今天,網站采用HTTPS是個必然的趨勢。

在nodejs中,提供了 https 這個模塊來完成 HTTPS 相關功能。從官方文檔來看,跟 http 模塊用法非常相似。

本文主要包含兩部分:

  1. 通過客戶端、服務端的例子,對https模塊進行入門講解。
  2. 如何訪問安全證書不受信任的網站。(以 12306 為例子)

篇幅所限,本文無法對 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無法確認他的安全性。

對這種情況,可以有如下處理方式:

  1. 停止訪問:著急搶票回家過年的老鄉表示無法接受。
  2. 無視安全警告,繼續訪問:大部分情況下,瀏覽器是會放行的,不過安全提示還在。
  3. 導入12306的CA根證書:瀏覽器乖乖就范,認為訪問是安全的。(實際上還是有安全提示,因為12306用的簽名算法安全級別不夠)

例子:觸發安全限制

同樣的,通過 node https client 發起請求,也會遇到同樣問題。我們做下實驗,代碼如下:

var https = require('https');https.get('https://kyfw.12306.cn/otn/regist/init', function(res){    res.on('data', function(data){    process.stdout.write(data);  });}).on('error', function(err){  console.error(err);});

運行上面代碼,得到下面的錯誤提示,意思是 安全證書不可靠,拒絕繼續訪問。

{ Error: self signed certificate in certificate chain
    at Error (native)
    at TLSSocket.<anonymous> (_tls_wrap.js:1055:38)
    at emitNone (events.js:86:13)
    at TLSSocket.emit (events.js:185:7)
    at TLSSocket._finishInit (_tls_wrap.js:580:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:412:38) code: 'SELF_SIGNED_CERT_IN_CHAIN' }

ps:個人認為這里的錯誤提示有點誤導人,12306網站的證書并不是自簽名的,只是對證書簽名的CA是12306自家的,不在可信列表里而已。自簽名證書,跟自己CA簽名的證書還是不一樣的。

類似在瀏覽器里訪問,我們可以采取如下處理:

  1. 不建議:忽略安全警告,繼續訪問;
  2. 建議:將12306的CA加入受信列表;

方法1:忽略安全警告,繼續訪問

非常簡單,將 rejectUnauthorized 設置為 false 就行,再次運行代碼,就可以愉快的返回頁面了。

// 例子:忽略安全警告var https = require('https');var fs = require('fs');var options = {   hostname: 'kyfw.12306.cn',  path: '/otn/leftTicket/init',  rejectUnauthorized: false // 忽略安全警告};var req = https.get(options, function(res){   res.pipe(process.stdout);  });req.on('error', function(err){  console.error(err.code);});

方法2:將12306的CA加入受信列表

這里包含3個步驟:

  1. 下載 12306 的CA證書
  2. 將der格式的CA證書,轉成pem格式
  3. 修改node https的配置

1、下載 12306 的CA證書

在12306的官網上,提供了CA證書的 下載地址 ,將它保存到本地,命名為 srca.cer。

2、將der格式的CA證書,轉成pem格式

https初始化client時,提供了 ca 這個配置項,可以將 12306 的CA證書添加進去。當你訪問 12306 的網站時,client就會用ca配置項里的 ca 證書,對當前的證書進行校驗,于是就校驗通過了。

需要注意的是,ca 配置項只支持 pem 格式,而從12306官網下載的是der格式的。需要轉換下格式才能用。關于 pem、der的區別,可參考 這里 。

openssl x509 -in srca.cer -inform der -outform pem -out srca.cer.pem

3、修改node https的配置

修改后的代碼如下,現在可以愉快的訪問12306了。

// 例子:將12306的CA證書,加入我們的信任列表里var https = require('https');var fs = require('fs');var ca = fs.readFileSync('./srca.cer.pem');var options = {  hostname: 'kyfw.12306.cn', path: '/otn/leftTicket/init', ca: [ ca ]};var req = https.get(options, function(res){  res.pipe(process.stdout); });req.on('error', function(err){ console.error(err.code);});

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
92裸体在线视频网站| 亚洲成人久久久| 欧美激情一级欧美精品| 欧美成人三级视频网站| 国产精品一区二区三区久久久| 久久精品中文字幕| 日韩中文字幕在线免费观看| 亚洲人成网站999久久久综合| 日韩美女视频免费看| 午夜精品久久久久久久白皮肤| 国产精品午夜一区二区欲梦| 国产精品午夜视频| 亚洲第一精品夜夜躁人人躁| 国产aⅴ夜夜欢一区二区三区| 欧美一区二区三区艳史| 国产精品久久久久久久久影视| 国产日韩欧美中文在线播放| 中文字幕亚洲一区二区三区五十路| 亚洲欧美在线x视频| 亚洲黄页网在线观看| 成人激情视频小说免费下载| 欧美福利视频网站| 日韩高清av一区二区三区| 粉嫩av一区二区三区免费野| 亚洲精品第一国产综合精品| 欧美最近摘花xxxx摘花| 亚洲精品成人久久久| 日韩美女在线看| 91chinesevideo永久地址| 欧美日韩免费在线观看| 久久久久国产精品免费网站| 久久国产色av| 精品国内产的精品视频在线观看| 国产精品99一区| 亚洲加勒比久久88色综合| 欧美综合国产精品久久丁香| 久久精品99久久久香蕉| 中文字幕久热精品视频在线| 久久亚洲国产成人| 久久久噜噜噜久久| 欧美日韩国产精品| 538国产精品一区二区免费视频| 91久久夜色精品国产网站| 久久国产精品99国产精| 久久亚洲国产精品成人av秋霞| 欧美高清videos高潮hd| 欧美午夜片在线免费观看| 亚洲国产精品99| 欧美日韩另类在线| 久久色免费在线视频| 国产精品综合不卡av| 亚洲一区精品电影| 亚洲最大成人在线| 久久人人爽人人爽爽久久| 色综合伊人色综合网站| 亚洲精品视频网上网址在线观看| 欧美午夜片欧美片在线观看| 欧美极品第一页| 久久激情五月丁香伊人| 日韩欧美在线国产| 欧美一区视频在线| 国产乱肥老妇国产一区二| 国产欧美一区二区三区四区| 欧美老女人bb| yw.139尤物在线精品视频| 国产精品极品尤物在线观看| 激情成人中文字幕| 97在线视频观看| 欧美性猛交xxxx黑人| 美女性感视频久久久| 日韩欧美一区二区三区| 成人有码在线播放| 久久成人在线视频| 欧美性黄网官网| 国产日韩欧美在线视频观看| 亚洲2020天天堂在线观看| 欧美国产在线电影| 亚洲级视频在线观看免费1级| 亚洲精品国产免费| 久久久久这里只有精品| 久久久久久美女| 国产精品免费电影| 精品国内自产拍在线观看| 91亚洲精华国产精华| 中文字幕国产精品久久| 国产精品久久一| 岛国av一区二区三区| 欧美国产精品人人做人人爱| 国产亚洲精品久久久久动| 国产精品海角社区在线观看| 国产精品美女网站| 92版电视剧仙鹤神针在线观看| 亚洲男人第一网站| 这里只有精品在线观看| 国产成人免费91av在线| 久久久免费精品视频| 国产成人91久久精品| 欧美野外wwwxxx| 欧美黄色成人网| 亚洲精品成a人在线观看| 日韩精品亚洲视频| 中文字幕欧美日韩va免费视频| 欧美性感美女h网站在线观看免费| 日本久久久久亚洲中字幕| 午夜精品一区二区三区在线| 国内精品小视频| 秋霞成人午夜鲁丝一区二区三区| 中文字幕亚洲欧美日韩在线不卡| 亚洲精品久久视频| 九九热精品在线| 国产97色在线|日韩| 日韩av在线网| 亚洲区一区二区| 亚洲精品中文字幕av| 色偷偷88888欧美精品久久久| 日韩大片免费观看视频播放| 黑人极品videos精品欧美裸| 揄拍成人国产精品视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲精品美女免费| 国产a∨精品一区二区三区不卡| 亚洲精品videossex少妇| 国产91精品青草社区| 久久91亚洲精品中文字幕| 亚洲免费影视第一页| 国产精品视频一区二区高潮| 欧美黄色小视频| 日本精品va在线观看| 欧美精品免费看| 欧美成人免费全部观看天天性色| 欧美做爰性生交视频| 欧美孕妇孕交黑巨大网站| 国产91久久婷婷一区二区| 国产亚洲成av人片在线观看桃| 91影院在线免费观看视频| 国产成人91久久精品| 国产精品成av人在线视午夜片| 国产69久久精品成人看| 国产精品一区久久久| 成人高清视频观看www| 狠狠久久亚洲欧美专区| 色综合久久中文字幕综合网小说| 日本精品免费一区二区三区| 国产99视频精品免视看7| 韩国三级日本三级少妇99| 日韩av有码在线| 日韩一级裸体免费视频| 日韩av黄色在线观看| 久久久av亚洲男天堂| 久久亚洲综合国产精品99麻豆精品福利| 欧美精品久久久久| 91免费的视频在线播放| 国产精品专区一| 57pao成人永久免费视频| 亚洲二区在线播放视频| 亚洲自拍偷拍网址| 久久久国产在线视频| 国产视频综合在线| 91人成网站www| 欧美最猛性xxxx| 曰本色欧美视频在线| 亚洲欧美中文在线视频| 久久视频在线免费观看| 欧美xxxwww|