在nodejs中使用express构建框架非常简单方便,但是一般情况下,http服务器都是默认创建的,也就是只能通过http协议访问。现在https已经成为一种发展趋势,所以我们应该顺应时代的潮流。在本文中,我们将使用自签名方法创建证书,然后使用express framework构建https服务器,最后让浏览器或客户端使用https协议进行访问。
首先,我们需要生成一个证书文件:
(1)生成一个私钥文件(下面的路径表示您想要保存的文件的路径位置)
OpenSSL gen RS 1024/path/private . PEM(2)通过上面生成的私钥文件生成CSR证书签名
opensslreq-new-key/path/private . PEM-outcsr . PEM(3)通过签署上述私钥文件和csr证书来生成证书文件
复制代码如下: OpenSSL x509-req-days 365-incsr . PEM-sign key/path/private . PEM-out/path/file . CRT。
此时生成的三个文件如下:
此时,将这三个文件复制到nodejs项目目录中。例如,我直接在项目根目录下创建一个新的证书文件夹,然后放三个文件:
完成上述步骤后,修改项目的启动文件。我这里的启动文件是app.js,或者有人是server.js下面的代码实现是一样的:
var express=require(' express ');//项目服务器使用express框架var app=express();var path=require(' path ');var fs=require(' fs ');//使用nodejs自己的http和https模块var http=require(' http ');var https=require(' https ');//导入生成的证书文件var私钥=fs . readfile sync(path . join(_ _ dirname,'。/certificate/private.pem '),' utf8 ')根据项目的路径;var certificate=fs . readfilesync(path . join(_ _ dirname,'。/certificate/file.crt '),' utf8 ';var凭据={key: privateKey,cert:证书};var HttpServer=Http . CreateServer(app);var https server=https . CreateServer(凭据,app);//可以分别为http和https设置访问端口号var PORT=8000var SSLPORT=8001//创建http服务器httpserver.listen (port,function () {console.log ('http服务器在: http://localhost 3360% s '上运行,端口);});//创建https服务器https server.listen (sslport,function () {console.log ('https服务器正在: https://localhost 3360% s '上运行,SSL port);});//可以判断是http还是https app.get ('/'),函数(req,RES) {if (req。协议==' https') {res.status (200)。send('这是https访问!');} else { res.status(200)。发送('这是http访问!');} });代码实现后,启动app.js脚本,可以使用‘node app . js’命令启动,也可以在其他IDE中运行,在浏览器中访问(注意express不是系统内置模块,需要通过npm安装):
Http访问:
Https访问:
我们可以看到我们已经成功地使用https访问了我们的服务器,但是Chrome浏览器显示红色的不安全。这是因为这个证书是我们自建的,没有经过第三方机构验证,所以会出现警告提示。在后续的博客中,我们将介绍如何申请认证证书。
在Chrome浏览器中打开开发者模式,可以在Security安全页面看到当前页面的证书信息,如下图:
单击“查看证书”查看证书的详细信息:
展开详细信息,查看创建证书时输入的所有证书信息。
同时,我们还可以使用Postman模拟客户端请求(实际开发中,服务器端学生可以向客户端学生发送证书,简单配置后即可实现https通信):
Http请求:
Https请求:
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。