在Node.js 中打开HTTP 服务非常简单。如果要使用Node.js开启HTTPS服务,需要两步:一是生成签名证书,二是需要使用Node.js提供的系统模块HTTPS来完成。
自签名证书企业公共网络常用的证书通常是全球权威CA机构颁发的证书,受到各大浏览器厂商的信任。为了开发和测试时的简单性,我们可以对证书进行自签名,但这在浏览器中打开时会提示安全问题。
[[345557]]
使用 openssl 工具生成自签名证书。简单分为以下几个步骤:1.使用openssl的genrsa命令生成服务器私钥文件
#genrsa生成密钥#-out指定输出文件opensslgenrsa-outserver.key20482。生成证书请求文件
#-new 执行生成新的证书请求#-key 指定输入密钥opensslreq-new-keyserver.key-outserver.csr# 会有如下交互提示。 CommonName可以自定义为域名,只需修改hosts文件的域名映射即可。 CountryName(2字母代码)[]:CNStateorProvinceName(全名)[]:ShangHaiLocalityName(例如,城市)[]:ShangHaiOrganizationName(例如,公司)[]:Node.jsOrganizationalUnitName(例如,部分)[]:CommonName(例如,完全限定主机名)[]:test.https。 com电子邮件地址[]:3。根据步骤2中的证书请求文件和步骤1中的服务器私钥文件生成证书
#x509 根据现有证书请求生成自签名根证书#-days 设置证书有效天数#-in 指定输入证书请求文件opensslx509-req-days365-inserver.csr-signkeyserver.key-成功后会生成outserver.crt 以下3个文件:
key是服务器上的私钥文件。 csr是提交给证书颁发机构CA的证书请求签名文件。 crt是由证书颁发机构CA签署的证书。使用 Node.js 中 HTTPS 模块开启一个服务与传统的HTTP方式相比,多了一个options参数,保证上面生成的自签名证书和下面的文件在同一个目录下。
//app.jsconsthttps=require('https');constfs=require('fs');constPORT=8443;constoptions={key:fs.readFileSync('./server.key'),cert:fs.readFileSync('./server .crt')};https.createServer(options,(req,res)={res.writeHead(200);res.end('HelloWorld!');}).listen(PORT,()=console.log( `Applisteningonport${PORT}!`));经测试,在Chrome版本85.0.4183.121中使用自签名证书是无法访问的。下面是360浏览器中访问的截图。
以下内容是在Safari 中访问的。虽然有提示,但是还是可以访问的。
结合 Express 框架使用经过上面两步的介绍,如果你现在想在Express这样的框架中使用的话,就非常简单了。以Express为例如下:
constexpress=require('express');consthttps=require('https');constfs=require('fs');constapp=express();constPORT=8443;constoptions={key:fs.readFileSync('./server.key '),cert:fs.readFileSync('./server.crt')};https.createServer(options,app).listen(PORT,()=console.log(`Applisteningonport${PORT}!`));app. get('/',(req,res)=res.send('HelloWorld!'));总结搭建一个HTTPS服务并不难。 Node.js 为我们提供了HTTPS 模块来轻松完成此操作。如果我们在本地测试,可以使用openssl工具生成自签名证书。另外,一些像阿里云这样的云服务商也提供了一些免费的证书也可以使用。
好了,文章到此结束,希望可以帮助到大家。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/7177.html
用户评论
太棒了,一直想学习如何搭建HTTPS服务器,这篇文章正好解决了我的问题!
有11位网友表示赞同!
我对 Node.js 还是挺好奇的,这篇博客讲解得很清晰,让我对 HTTPS 服务器有了更深入的理解。
有17位网友表示赞同!
原来搭建HTTPS服务器这么方便啊,之前我还以为很复杂呢。
有20位网友表示赞同!
分享一下我的经验:在设置证书的时候要注意安全性问题。
有6位网友表示赞同!
这个博客链接太棒了!推荐给想要学习 Node.js 的小伙伴们。
有20位网友表示赞同!
Node.js 最适合开发一些需要高并发处理的应用吗?
有13位网友表示赞同!
看了博主分享的代码,感觉搭建 HTTPS 服务器真简单啊!
有12位网友表示赞同!
我以前用 Python 搭建过 HTTP 服务器,现在想尝试一下 Node.js 的方式。
有5位网友表示赞同!
学习新的技术永远是一件很有成就感的事,感谢作者分享这个宝贵的文章。
有18位网友表示赞同!
我现在正在学习前端开发,以后说不定会用到 HTTPS 服务器呢!
有7位网友表示赞同!
博主写的代码示例非常清晰易懂,很容易跟着理解。
有9位网友表示赞同!
感觉 Node.js 在 web 开发领域越来越受欢迎了。
有15位网友表示赞同!
我还在研究 Node.js 中其他方面的功能,比如异步编程等。
有19位网友表示赞同!
对于新手来说,这篇博客讲解非常详细,能够很好的入门。
有8位网友表示赞同!
希望以后作者能分享更多关于 Node.js 的精彩内容!
有10位网友表示赞同!
使用 HTTPS 服务器可以提高网站的安全性和用户信任度吧?
有16位网友表示赞同!
这个博客让我对证书的申请流程有了更清晰的认识。
有15位网友表示赞同!
搭建HTTPS服务器确实非常必要,可以保护网站和用户的隐私安全。
有19位网友表示赞同!
Node.js 的性能确实很强,在高并发环境下表现出色。
有11位网友表示赞同!