国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【小沐學(xué)前端】Node.js搭建HTTPS 服務(wù)器

這篇具有很好參考價值的文章主要介紹了【小沐學(xué)前端】Node.js搭建HTTPS 服務(wù)器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、簡介

1.1 HTTPS協(xié)議

HTTPS是什么?HTTPS是基于TLS/SSL的HTTP協(xié)議。

HTTPS (全稱:Hypertext Transfer Protocol Secure),是以安全為目標(biāo)的 HTTP 通道,在HTTP的基礎(chǔ)上通過傳輸加密和身份認證保證了傳輸過程的安全性。HTTPS 在HTTP 的基礎(chǔ)下加入SSL,HTTPS 的安全基礎(chǔ)是 SSL,因此加密的詳細內(nèi)容就需要 SSL。 HTTPS 存在不同于 HTTP 的默認端口及一個加密/身份驗證層(在 HTTP與 TCP 之間)。這個系統(tǒng)提供了身份驗證與加密通訊方法。它被廣泛用于萬維網(wǎng)上安全敏感的通訊,例如交易支付等方面 。
node https,Web,https,前端,node.js,http,openssl

1.2 Node.js中的HTTPS

HTTPS在Node.js里它可以作為單獨的模塊來實現(xiàn)。
(1)生成簽名證書。
(2)使用Node.js的HTTPS模塊

2、生成自簽名證書

通常在企業(yè)中面向公網(wǎng)使用的證書通常是由全球權(quán)威 CA 機構(gòu)簽發(fā)的證書,受各大瀏覽器廠商信任。
在開發(fā)測試時為了簡單點我們可以自簽名證書,但是這在瀏覽器中打開時會有安全問題提示。

直接命令行執(zhí)行openssl會報錯。需要將openssl的路徑添加到環(huán)境變量PATH里。
node https,Web,https,前端,node.js,http,openssl
復(fù)制openssl安裝路徑。
node https,Web,https,前端,node.js,http,openssl
添加到環(huán)境變量里如下:
node https,Web,https,前端,node.js,http,openssl
再次執(zhí)行命令如下:
node https,Web,https,前端,node.js,http,openssl

使用 openssl 工具生成自簽名證書。

2.1 key文件

1、使用 openssl 的 genrsa 命令生成一個服務(wù)器私鑰文件

# genrsa 生成密鑰
# -out 指定輸出的文件
openssl genrsa -out server.key 2048

node https,Web,https,前端,node.js,http,openssl

node https,Web,https,前端,node.js,http,openssl

2.2 csr文件

2、生成證書請求文件

# -new 執(zhí)行生成新的證書請求
# -key 指定輸入的密鑰
openssl req -new -key server.key -out server.csr

# req 生成證書簽名請求
# -new 新生成
# -key 私鑰文件
# -out 生成的CSR文件
# -subj 生成CSR證書的參數(shù)
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Guangdong/L=Guangzhou/O=tomcat/OU=tomcat/CN=tomcat.cn"

報錯了。
node https,Web,https,前端,node.js,http,openssl
openssl出現(xiàn)錯誤:Can’t open C:\Program Files\Common Files\SSL/openssl.cnf for reading,no such file or directory.

出現(xiàn)這個錯誤的原因是可能沒有設(shè)置環(huán)境變量OPENSSL_CONF。openssl.cfg是openssl的配置信息。

set OPENSSL_CONF=D:\OpenSSL-Win64\bin\cnf\openssl.cfg

node https,Web,https,前端,node.js,http,openssl
再次執(zhí)行上面的命令如下:
node https,Web,https,前端,node.js,http,openssl
依次添加相關(guān)參數(shù)如下:

字段 字段含義 示例
/C= Country 國家 CN
/ST= State or Province 省 Guangdong
/L= Location or City 城市 Guangzhou
/O= Organization 組織或企業(yè) tomcat
/OU= Organization Unit 部門 tomcat
/CN= Common Name 域名或IP tomcat.cn

node https,Web,https,前端,node.js,http,openssl
生成文件如下:
node https,Web,https,前端,node.js,http,openssl

2.3 crt文件

3、根據(jù)第 2 步的證書請求文件和第 1 步的服務(wù)器私鑰文件,生成證書。

# x509 根據(jù)現(xiàn)有的證書請求生成自簽名根證書
# -days 設(shè)置證書的有效天數(shù)
# -in 指定輸入證書請求文件
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

執(zhí)行命令如下:
node https,Web,https,前端,node.js,http,openssl
生成文件如下:
node https,Web,https,前端,node.js,http,openssl

4、生成如下 三 個文件:

X.509證書包含三個文件:key,csr,crt。

*.key是服務(wù)器上的私鑰文件,用于對發(fā)送給客戶端數(shù)據(jù)的加密,以及對從客戶端接收到數(shù)據(jù)的解密
*.csr是證書簽名請求文件,用于提交給證書頒發(fā)機構(gòu)(CA)對證書簽名
*.crt是由證書頒發(fā)機構(gòu)(CA)簽名后的證書,或者是開發(fā)者自簽名的證書,包含證書持有人的信息,持有人的公鑰,以及簽署者的簽名等信息
備注:在密碼學(xué)中,X.509是一個標(biāo)準(zhǔn),規(guī)范了公開秘鑰認證、證書吊銷列表、授權(quán)憑證、憑證路徑驗證算法等。

4、代碼測試

4.1 Node.js簡介

Node.js 非常強大,只需動手寫幾行代碼就可以構(gòu)建出整個HTTP服務(wù)器。事實上,我們的Web應(yīng)用以及對應(yīng)的Web服務(wù)器基本上是一樣的。
在我們創(chuàng)建Node.js第一個"Hello, World!"應(yīng)用前,讓我們先了解下Node.js應(yīng)用是由哪幾部分組成的:

  • (1)引入模塊(required):我們可以使用require指令來載入Node.js模塊。

  • (2)創(chuàng)建服務(wù)器:服務(wù)器可以監(jiān)聽客戶端的請求,類似于Apache 、Nginx等HTTP服務(wù)器。

  • (3)接收請求與響應(yīng)請求:服務(wù)器很容易創(chuàng)建,客戶端可以使用瀏覽器或終端發(fā)送HTTP請求,服務(wù)器接收請求后返回響應(yīng)數(shù)據(jù)。

4.2 Node.js的http模塊

var http = require('http');

http.createServer(function (request, response) {
	// 發(fā)送 HTTP 頭部 
	// HTTP 狀態(tài)值: 200 : OK
	// 內(nèi)容類型: text/plain
	response.writeHead(200, {'Content-Type': 'text/plain;charset=UTF8'});
	
	// 發(fā)送響應(yīng)數(shù)據(jù) "Hello World"
	response.end('Hello World, 愛看書的小沐!\n');
}).listen(8888);

// 終端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');

命令行執(zhí)行命令:

node server.js

node https,Web,https,前端,node.js,http,openssl
瀏覽器預(yù)覽如下:
node https,Web,https,前端,node.js,http,openssl

4.3 Node.js的Express模塊

Express是一個簡潔而靈活的node.js Web應(yīng)用框架, 提供了一系列強大特性幫助你創(chuàng)建各種Web應(yīng)用,和豐富的HTTP工具。使用Express可以快速地搭建一個完整功能的網(wǎng)站。
Express 框架核心特性包括:

  • 可以設(shè)置中間件來響應(yīng)HTTP請求。
  • 定義了路由表用于執(zhí)行不同的HTTP請求動作。
  • 可以通過向模板傳遞參數(shù)來動態(tài)渲染HTML頁面。
# 安裝Express并將其保存到依賴列表中:
npm install express --save

node https,Web,https,前端,node.js,http,openssl

接下來我們使用Express框架來輸出"Hello World"。

以下實例中我們引入了express模塊,并在客戶端發(fā)起請求后,響應(yīng)"Hello World"字符串。

創(chuàng)建express_demo.js文件,代碼如下所示:

//express_demo.js 文件
var express = require('express');
var app = express();

app.get('/', function (req, res) {
   res.send('Hello World, 愛看書的小沐!');
})

var server = app.listen(8081, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("應(yīng)用實例,訪問地址為 http://%s:%s", host, port)
})

node https,Web,https,前端,node.js,http,openssl
node https,Web,https,前端,node.js,http,openssl

在HTTP請求中,我們可以通過路由提取出請求的URL以及GET/POST參數(shù)。

接下來我們擴展Hello World,添加一些功能來處理更多類型的HTTP請求。
創(chuàng)建express_demo2.js文件,代碼如下所示:

var express = require('express');
var app = express();

//  主頁輸出 "Hello World"
app.get('/', function (req, res) {
   console.log("主頁 GET 請求");
   res.send('Hello GET');
})

//  POST 請求
app.post('/', function (req, res) {
   console.log("主頁 POST 請求");
   res.send('Hello POST');
})

//  /list_user 頁面 GET 請求
app.get('/list_user', function (req, res) {
   console.log("/list_user GET 請求");
   res.send('用戶列表頁面');
})

// 對頁面 abcd, abxcd, ab123cd, 等響應(yīng) GET 請求
app.get('/ab*cd', function(req, res) {   
   console.log("/ab*cd GET 請求");
   res.send('正則匹配');
})

var server = app.listen(8081, function () {
  var host = server.address().address
  var port = server.address().port
  console.log("應(yīng)用實例,訪問地址為 http://%s:%s", host, port)
})

node https,Web,https,前端,node.js,http,openssl

4.4 Node.js的https模塊

https.Server是tls.Server的子類,并且和http.Server一樣觸發(fā)事件。

https.createServer(options[, requestListener])
返回一個新的HTTPS服務(wù)器對象。

// curl -k https://localhost:8000/
var https = require('https');
var fs = require('fs');

var options = {
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.crt')
};

https.createServer(options, function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain;charset=UTF8'});
  res.end("hello world, 愛看書的小沐!\n");
}).listen(8000);
//}).listen(443);

node https,Web,https,前端,node.js,http,openssl

node https,Web,https,前端,node.js,http,openssl

使用 Node.js 中 HTTPS 模塊開啟一個服務(wù)
相比傳統(tǒng) HTTP 方式多了一個 options 參數(shù),保證上面生成的自簽名證書和和下面文件是同級目錄。

https.request(options, callback)
可以給安全web服務(wù)器發(fā)送請求。

var https = require('https');

var options = {
  hostname: 'encrypted.google.com',
  port: 443,
  path: '/',
  method: 'GET'
};

var req = https.request(options, function(res) {
  console.log("statusCode: ", res.statusCode);
  console.log("headers: ", res.headers);

  res.on('data', function(d) {
    process.stdout.write(d);
  });
});
req.end();

req.on('error', function(e) {
  console.error(e);
});

https.get(options, callback)
和http.get()類似,不過是HTTPS版本的.

var https = require('https');

https.get('https://encrypted.google.com/', function(res) {
  console.log("statusCode: ", res.statusCode);
  console.log("headers: ", res.headers);

  res.on('data', function(d) {
    process.stdout.write(d);
  });

}).on('error', function(e) {
  console.error(e);
});

4.5 Node.js的https+express模塊

// app.js
const https = require('https');
const fs = require('fs');
const PORT = 8443;
const options = {
  key: fs.readFileSync('./server.key'),
  cert: fs.readFileSync('./server.crt')
};

https.createServer(options, (req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain;charset=UTF8'});
  res.end('Hello World!愛看書的小沐!');
}).listen(PORT, () => console.log(`App listening on port ${PORT}!`));

node https,Web,https,前端,node.js,http,openssl

結(jié)合 Express 框架使用:

const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
const PORT = 8443;
const options = {
  key: fs.readFileSync('./server.key'),
  cert: fs.readFileSync('./server.crt')
};

https.createServer(options, app)
  .listen(PORT, () => console.log(`App listening on port ${PORT}!`));

app.get('/', (req, res) => res.send('Hello World!愛看書的小沐!'));

node https,Web,https,前端,node.js,http,openssl

結(jié)語

如果您覺得該方法或代碼有一點點用處,可以給作者點個贊,或打賞杯咖啡;╮( ̄▽ ̄)╭
如果您感覺方法或代碼不咋地//(ㄒoㄒ)//,就在評論處留言,作者繼續(xù)改進;o_O???
如果您需要相關(guān)功能的代碼定制化開發(fā),可以留言私信作者;(????)
感謝各位大佬童鞋們的支持!( ′ ▽′ )? ( ′ ▽′)っ?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-772608.html

到了這里,關(guān)于【小沐學(xué)前端】Node.js搭建HTTPS 服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【小沐學(xué)Python】Python實現(xiàn)Web服務(wù)器(Flask打包部署上線)

    【小沐學(xué)Python】Python實現(xiàn)Web服務(wù)器(Flask打包部署上線)

    ??基于Python的Web服務(wù)器系列相關(guān)文章編寫如下??: ??【W(wǎng)eb開發(fā)】Python實現(xiàn)Web服務(wù)器(Flask快速入門)?? ??【W(wǎng)eb開發(fā)】Python實現(xiàn)Web服務(wù)器(Flask案例測試)?? ??【W(wǎng)eb開發(fā)】Python實現(xiàn)Web服務(wù)器(Flask部署上線)?? ??【W(wǎng)eb開發(fā)】Python實現(xiàn)Web服務(wù)器(Tornado入門)?? ??【W(wǎng)eb開

    2024年02月12日
    瀏覽(92)
  • 【小沐學(xué)Python】Python實現(xiàn)Web服務(wù)器(Flask框架擴展:Flask-Admin)

    【小沐學(xué)Python】Python實現(xiàn)Web服務(wù)器(Flask框架擴展:Flask-Admin)

    flask作為一個微框架,F(xiàn)lask 允許您以很少的開銷構(gòu)建 Web 服務(wù)。 它為您(設(shè)計師)提供了自由,以適合您的方式實施您的項目 特定應(yīng)用。 一個最小的 Flask 應(yīng)用如下: Flask-Admin是一個batteries-included,易于使用的Flask擴展,可讓您 向 Flask 應(yīng)用程序添加管理界面。它的靈感來自 d

    2024年02月02日
    瀏覽(100)
  • 【小沐學(xué)前端】Windows下搭建WordPress(nginx1.25、PHP8.2、WordPress6.3、MySQL5.7)

    【小沐學(xué)前端】Windows下搭建WordPress(nginx1.25、PHP8.2、WordPress6.3、MySQL5.7)

    WordPress是基于PHP和MySQL的免費開源內(nèi)容管理系統(tǒng)(CMS)。 它是全球使用最廣泛的CMS軟件,截至2019年5月,它為排名前1000萬個網(wǎng)站中提供了超過30%的支持,并擁有在使用CMS構(gòu)建的所有網(wǎng)站中,估計有60%的市場份額。 nginx [engine x] 是一個 HTTP 和反向代理服務(wù)器, 郵件代理服務(wù)

    2024年01月17日
    瀏覽(26)
  • 【小沐學(xué)C++】libcurl實現(xiàn)HTTP/HTTPS請求

    【小沐學(xué)C++】libcurl實現(xiàn)HTTP/HTTPS請求

    https://github.com/curl/curl https://curl.se/libcurl/ https://curl.se/download.html libcurl 是一個免費且易于使用的客戶端 URL 傳輸 庫,支持DICT,F(xiàn)ILE,F(xiàn)TP,F(xiàn)TPS,GOPHER,GOPHERS,HTTP,HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POPP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB、SMBS、SMTP、SMTPS、TELNET 和 T

    2024年02月15日
    瀏覽(21)
  • Node.js搭建Https服務(wù)

    Node.js搭建Https服務(wù)

    Node.js用于做小程序后臺服務(wù),域名要求必須是Https協(xié)議。在Node.js開啟Http服務(wù)是非常簡單的,如下: 如果想使用Https服務(wù)需要兩步:1. 需要有一份SSL證書;2. 使用Node.js自身的Https模塊。 獲取SSL證書方式有兩種: 自己借助openSSL工具生成SSL證書 下載某些平臺提供的免費/付費的

    2024年01月21日
    瀏覽(24)
  • 瘋狂Node.js服務(wù)器篇:使用VsCode搭建Node.js開發(fā)環(huán)境

    瘋狂Node.js服務(wù)器篇:使用VsCode搭建Node.js開發(fā)環(huán)境 Node.js作為一種流行的服務(wù)器端JavaScript運行環(huán)境,提供了強大的功能和便捷的開發(fā)體驗。在本篇文章中,我們將探索如何使用VsCode搭建Node.js開發(fā)環(huán)境,以便更高效地進行服務(wù)器端應(yīng)用程序的開發(fā)。 步驟1:安裝Node.js 首先,我們

    2024年02月08日
    瀏覽(24)
  • Node.js怎么搭建HTTP服務(wù)器

    在 Node.js 中搭建一個簡單的 HTTP 服務(wù)器非常容易。以下是一個基本的示例,演示如何使用 Node.js 創(chuàng)建一個簡單的 HTTP 服務(wù)器: // 導(dǎo)入 http 模塊 const http = require(\\\'http\\\'); // 創(chuàng)建一個 HTTP 服務(wù)器 const server = http.createServer((req, res) = { // 設(shè)置響應(yīng)頭 res.writeHead(200, {\\\'Content-Type\\\': \\\'text/pl

    2024年02月10日
    瀏覽(95)
  • 使用VsCode搭建Node.js服務(wù)器開發(fā)環(huán)境

    使用VsCode搭建Node.js服務(wù)器開發(fā)環(huán)境 在進行Node.js服務(wù)器開發(fā)時,一個好的集成開發(fā)環(huán)境可以幫助您更快地編寫代碼,并且提高程序的效率。在此推薦安裝配置VSCode作為Node.js服務(wù)器開發(fā)環(huán)境,下面介紹安裝配置過程。 Step 1:下載安裝VSCode 首先我們需要訪問VSCode官網(wǎng)(https://c

    2024年02月15日
    瀏覽(27)
  • 【使用Node.js搭建自己的HTTP服務(wù)器】

    【使用Node.js搭建自己的HTTP服務(wù)器】

    Node.js 是能夠在服務(wù)器端運行 JavaScript 的開放源代碼、跨平臺運行環(huán)境。Node.js 由 OpenJS Foundation(原為 Node.js Foundation,已與 JS Foundation 合并)持有和維護,亦為 Linux 基金會的項目。Node.js 采用 Google 開發(fā)的 V8 運行代碼,使用事件驅(qū)動、非阻塞和異步輸入輸出模型等技術(shù)來提高

    2024年02月11日
    瀏覽(89)
  • 【小沐學(xué)NLP】Python實現(xiàn)聊天機器人(微軟Azure機器人服務(wù))

    【小沐學(xué)NLP】Python實現(xiàn)聊天機器人(微軟Azure機器人服務(wù))

    ??NLP開發(fā)系列相關(guān)文章編寫如下??: 1 ??【小沐學(xué)NLP】Python實現(xiàn)詞云圖?? 2 ??【小沐學(xué)NLP】Python實現(xiàn)圖片文字識別?? 3 ??【小沐學(xué)NLP】Python實現(xiàn)中文、英文分詞?? 4 ??【小沐學(xué)NLP】Python實現(xiàn)聊天機器人(ELIZA))?? 5 ??【小沐學(xué)NLP】Python實現(xiàn)聊天機器人(ALICE)?? 6

    2024年02月12日
    瀏覽(98)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包