博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Express实现http和https服务
阅读量:7250 次
发布时间:2019-06-29

本文共 1864 字,大约阅读时间需要 6 分钟。

一、介绍Http与Https

概念

  • HTTP: 超文本传输协议(Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
  • HTTPS: 是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

区别

  • https协议需要到ca申请证书,一般免费证书很少,需要交费。
  • http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,默认用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

二、 构建Https服务器

新建工程

$ cd /home$ express -e ExpressServer$ cd ExpressServer $ sudo npm install

生成证书文件

# 创建一个文件夹存放证书$ mkdir cert$ cd cert#生成私钥key文件:$ openssl genrsa -out privatekey.pem 1024#通过私钥生成CSR证书签名$ openssl req -new -key privatekey.pem -out certsign.csr# 通过私钥和证书签名生成证书文件 $ openssl x509 -req -in certsign.csr -signkey privatekey.pem -out certificate.crt

生成了三个文件:

  • privatekey.pem (私钥)
  • certsign.csr (CSR证书签名)
  • certificate.crt (证书文件)

Express服务端代码

var app = require('express')();var fs = require('fs'); var http = require('http'); var https = require('https'); var httpServer = http.createServer(app); var httpsServer = https.createServer({ key: fs.readFileSync('./cert/privatekey.pem', 'utf8'), cert: fs.readFileSync('./cert/certificate.crt', 'utf8') }, app); var PORT = 80; var SSLPORT = 443; 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); }); // 访问路径 app.get('/:name', function(req, res) { if(req.protocol === 'https') { res.send('https:' + req.params.name); } else { res.send('http:' + req.params.name); } });

启动服务器

$ node app.jsHTTP Server is running on: http://localhost:80https Server is running on: https://localhost:443

由于我们证书是自己创建的,没有经过第三方机构的验证,因此会出现警告的提示。可以去有资质的网络运营商,去申请自己的证书。

转载地址:http://zuhbm.baihongyu.com/

你可能感兴趣的文章
四位辉光管时钟-学长毕设
查看>>
大话RAC介质恢复---联机日志损坏
查看>>
oracle 内存分配和调优 总结
查看>>
移植最新版libmemcached到VC++的艰苦历程和经验总结(上)
查看>>
诡异的bug: tcsh陷入死循环
查看>>
java-第一章-上机练习-04
查看>>
Active Directory 基础 (1)
查看>>
xml地图生成网址
查看>>
Python 练习1
查看>>
TCExam文件代码注释分析(后台首页admin/code/index.php)
查看>>
Finereport在企业级BI分析中的应用
查看>>
linux内核参数注释与优化
查看>>
linux 2.6x内核升级
查看>>
pxe
查看>>
NFS网络文件系统安装
查看>>
网页嵌入自动生成当前网页二维码图片代码
查看>>
Linux时间同步服务
查看>>
Python基础-----列表、元组、集合(2)
查看>>
iptables详解
查看>>
Redisson官方文档 - 12. 独立节点模式
查看>>