Nodejs+Express創(chuàng)建HTTPS服務(wù)器

終于有時(shí)間整理了腌歉。依痊。避除。

為了使我的Nodejs服務(wù)器提供HTTPS服務(wù),學(xué)習(xí)了一下如何利用express創(chuàng)建https服務(wù)器胸嘁,現(xiàn)記錄如下瓶摆。(一點(diǎn)一點(diǎn)的積累與掌握吧)


1. Http與Https

介紹

  • HTTP: 超文本傳輸協(xié)議 (Hypertext transfer protocol) 是一種詳細(xì)規(guī)定了瀏覽器和萬(wàn)維網(wǎng)服務(wù)器之間互相通信的規(guī)則,通過(guò)因特網(wǎng)傳送萬(wàn)維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議性宏。
  • HTTPS:(Hypertext Transfer Protocol over Secure Socket Layer)赏壹,是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版衔沼。即HTTP下加入SSL層蝌借,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL指蚁。 它是一個(gè)URI scheme(抽象標(biāo)識(shí)符體系)菩佑,句法類(lèi)同http:體系。用于安全的HTTP數(shù)據(jù)傳輸凝化。https:URL表明它使用了HTTP稍坯,但HTTPS存在不同于HTTP的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在HTTP與TCP之間)。這個(gè)系統(tǒng)的最初研發(fā)由網(wǎng)景公司進(jìn)行搓劫,提供了身份驗(yàn)證與加密通訊方法瞧哟,現(xiàn)在它被廣泛用于萬(wàn)維網(wǎng)上安全敏感的通訊,例如交易支付方面枪向。

區(qū)別

  • https協(xié)議需要到ca申請(qǐng)證書(shū)勤揩,一般免費(fèi)證書(shū)很少,需要交費(fèi)秘蛔。
  • http是超文本傳輸協(xié)議陨亡,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議深员。
  • http和https使用的是完全不同的連接方式负蠕,用的端口也不一樣,前者是80倦畅,后者是443遮糖。
  • http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的叠赐;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸欲账、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全燎悍。

2. 使用Express創(chuàng)建Https服務(wù)器

在Nodejs中敬惦,我們可以通過(guò)內(nèi)置的https庫(kù),來(lái)實(shí)現(xiàn)HTTPS服務(wù)器谈山。

  • 首先俄删,我們需要利用openssl生成證書(shū)文件:
#生成私鑰key文件
openssl genrsa 1024 > /path/to/private.pem
//
#通過(guò)私鑰文件生成CSR證書(shū)簽名
openssl req -new -key /path/to/private.pem -out csr.pem
//
#通過(guò)私鑰文件和CSR證書(shū)簽名生成證書(shū)文件
openssl x509 -req -days 365 -in csr.pem -signkey /path/to/private.pem -out /path/to/file.crt

新生成了三個(gè)文件:

  • private.pem: 私鑰
  • csr.pem: CSR證書(shū)簽名
  • file.crt: 證書(shū)文件
  • 修改Nodejs啟動(dòng)文件server.js:
var app = require('express')();
var fs = require('fs');
var http = require('http');
var https = require('https');
var privateKey  = fs.readFileSync('/path/to/private.pem', 'utf8');
var certificate = fs.readFileSync('/path/to/file.crt', 'utf8');
var credentials = {key: privateKey, cert: certificate};

var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);
var PORT = 18080;
var SSLPORT = 18081;

httpServer.listen(PORT, function() {
    console.log('HTTP Server is running on: http://localhost:%s', PORT);
});
httpsServer.listen(SSLPORT, function() {
    console.log('HTTPS Server is running on: https://localhost:%s', SSLPORT);
});

// Welcome
app.get('/', function(req, res) {
    if(req.protocol === 'https') {
        res.status(200).send('Welcome to Safety Land!');
    }
    else {
        res.status(200).send('Welcome!');
    }
});
  • 啟動(dòng)服務(wù)器:
$ node server.js
HTTP Server is running on: http://localhost:18080
HTTPS Server is running on: https://localhost:18081
  • 打開(kāi)瀏覽器

HTTP訪問(wèn):


HTTP訪問(wèn)

HTTPS訪問(wèn):


HTTPS訪問(wèn)

查看證書(shū):


查看證書(shū)

由于我們證書(shū)是自己創(chuàng)建的,沒(méi)有經(jīng)過(guò)第三方機(jī)構(gòu)的驗(yàn)證奏路,所以會(huì)出現(xiàn)警告的提示畴椰。有條件的可以去godaddy SSL Cert官網(wǎng)申請(qǐng),當(dāng)然挺貴的鸽粉,免費(fèi)黨就選擇了WoSign斜脂,也是可以的,詳情見(jiàn)[https://weixin.frankfan.me]触机。

WoSign驗(yàn)證證書(shū)

至此帚戳,我們成功的利用Nodejs內(nèi)置https和express創(chuàng)建了HTTPS服務(wù)器玷或。

參考:
http://blog.fens.me/nodejs-https-server/
http://heyrod.com/snippet/s/node-https-ssl.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市片任,隨后出現(xiàn)的幾起案子偏友,更是在濱河造成了極大的恐慌,老刑警劉巖对供,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件位他,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡产场,警方通過(guò)查閱死者的電腦和手機(jī)鹅髓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)京景,“玉大人窿冯,你說(shuō)我怎么就攤上這事〈姿冢” “怎么了靡菇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)米愿。 經(jīng)常有香客問(wèn)我厦凤,道長(zhǎng),這世上最難降的妖魔是什么育苟? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任较鼓,我火速辦了婚禮,結(jié)果婚禮上违柏,老公的妹妹穿的比我還像新娘博烂。我一直安慰自己,他們只是感情好漱竖,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布禽篱。 她就那樣靜靜地躺著,像睡著了一般馍惹。 火紅的嫁衣襯著肌膚如雪躺率。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天万矾,我揣著相機(jī)與錄音悼吱,去河邊找鬼。 笑死良狈,一個(gè)胖子當(dāng)著我的面吹牛后添,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播薪丁,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼遇西,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼馅精!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起努溃,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤硫嘶,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后梧税,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡称近,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年第队,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刨秆。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凳谦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出衡未,到底是詐尸還是另有隱情尸执,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布缓醋,位于F島的核電站如失,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏送粱。R本人自食惡果不足惜褪贵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抗俄。 院中可真熱鬧脆丁,春花似錦、人聲如沸动雹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胰蝠。三九已至歼培,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姊氓,已是汗流浹背丐怯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翔横,地道東北人读跷。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像禾唁,于是被迫代替她去往敵國(guó)和親效览。 傳聞我的和親對(duì)象是個(gè)殘疾皇子无切,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容