如何在 Node.js 中生成和使用 SSL 证书

简介: 如何在 Node.js 中生成和使用 SSL 证书

在保护您的 Web 应用程序时,SSL 证书是您需要考虑的最重要因素之一。SSL 证书是浏览器和搜索引擎用来验证网站真实性的数字证书。如果没有 SSL 证书,任何人都可以轻松冒充您的网站并窃取敏感的用户数据。

如果您的应用程序可供网络外部的用户使用,那么您还必须使用 SSL 证书。这样,您就可以相信用户正在连接到您的服务器,而不是可能伪装成它的人。

这篇文章将涵盖所有内容,从如何生成您自己的 SSL 证书,以便您可以使用 SSL 加密来保护您的应用程序和 HTTPS 链接。到最后,您将准确了解如何使用 SSL 加密设置和保护您的 Node.js 应用程序。

什么是 SSL 证书?

SSL 证书代表安全套接字层证书是一种数字证书,可在 Web 浏览器和 Web 服务器之间启用加密通信。数以百万计的在线企业和个人使用它来降低敏感信息(例如,信用卡号、用户名、密码、电子邮件等)被黑客和身份窃贼窃取或篡改的风险。

有两种类型的 SSL 证书:

  • 自签名:由应用程序生成并用于测试环境
  • CA 签名:由 CA(证书颁发机构)生成和签名。它用于生产。

在这篇文章中,我们将重点关注自签名 SSL 证书。

设置 Node.js 开发环境

在生成我们自己的 SSL 证书之前,让我们创建一个简单的 ExpressJs 应用程序。

要创建一个新的 Express 项目,让我们创建一个名为node-ssl -server 的目录,并使用此命令在终端中打开node-ssl-server目录。

cd node-ssl-server
复制代码

然后运行这个命令来初始化一个新的 npm 项目:

npm init --y
复制代码

现在让我们安装依赖项 ie express ,为此运行此命令:

npm install --save express
复制代码

现在让我们在 package.json 中创建一个启动脚本,只需将这一行添加到“script{}”中,如下所示:

"scripts": {
"start":"node index.js"
},
复制代码

将 index.js 文件添加到我们的应用程序并在其中添加几行,如下所示:

const express= require('express')
const https=require('https')
const fs=require('fs')
const path=require('path')
const app=express();
app.use('/',(req,res,next)=>{
res.send('hello I am SSL Server !')
})
const options={
key: '',
cert: ''
}
const sslServer=https.createServer(options,app);
sslServer.listen(1337,()=>{
console.log('Secure server is listening on port 1337')
})
复制代码

让我们生成 SSL 证书

在我们继续之前,让我们创建一个目录来将证书存储在我们的应用程序文件夹中。

mkdir cert
复制代码

现在使用 cd 命令移动到 cert 目录:

cd cert
复制代码

要生成 SSL 证书,我们需要按照以下步骤操作:

  • 生成私钥
  • 使用私钥创建 CSR(证书签名请求)。
  • 从 CSR 生成 SSL 证书

生成私钥

要生成私钥,我们需要在本地计算机上安装OpenSSL,这是一个用于传输层安全性 (TLS) 和安全套接字层 (SSL) 协议的全功能工具包。这些文章可以帮助您安装它。Windows - Ubuntu

安装完成后,我们需要运行如下所示的命令来生成私钥:

openssl genrsa -out key.pem
复制代码

运行上述命令后,它将生成私钥并将其保存在 cert 目录内的key.pem文件中,并在终端中提供此类消息。

Generating RSA private key, 2048 bit long modulus
...+++
.................+++
e is 65537 (0x10001)
复制代码

创建 CSR(证书签名请求)

由于我们是自己的证书颁发机构,因此我们需要使用 CSR 来生成我们的证书。为此,我们需要运行以下命令。

openssl req -new -key key.pem -out csr.pem
复制代码

运行此命令后,它会询问几个问题,如下所示:

网络异常,图片无法展示
|

如果您想提供可以提供的详细信息,您可以通过简单地按 enter else 来跳过任何问题,这完全取决于您。

完成这些问题后,它将在cert文件夹内的csr.pem文件中生成 CSR 。**

生成 SSL 证书

现在进行最后的步骤,我们需要使用key.pemcsr.pem文件来生成我们的 SSL 证书。

让我们运行下面的命令来生成它。

openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out cert.pem
复制代码

注意:我们使用 x509,因为它是定义公钥证书格式的标准。我们将证书的有效期设置为 365 天。

运行上述命令后,它将证书保存在 cert 文件夹内的cert.pem文件中。 现在您可以删除csr.pem文件,也可以保留它。

在 Express 中集成 SSL 证书

现在让我们使用文件系统 (fs) 和路径模块在我们的应用程序中使用这些证书。为此,我们需要在我们的应用程序中编辑几行,如下所述。

早些时候我们创建了一个常量变量选项。现在我们将通过在其中添加生成的证书的路径来更新该部分代码,如下所示。

前:

const options = {
key:'',
cert:''
}
复制代码

后:

const options = {
key:fs.readFileSync(path.join(__dirname,'./cert/key.pem')),
cert:fs.readFileSync(path.join(__dirname,'./cert/cert.pem'))
}
复制代码

完成后保存并运行服务器:

npm start
复制代码

您可以通过从这个 URL 访问它来检查 HTTPS 是否正常工作:

https://localhost:1337

网络异常,图片无法展示
|

结论

尽管我们有一个有效的证书,但您可能会在浏览器中看到“不安全”,这只是因为我们已经生成了证书,而它不是由某些已知的证书颁发机构生成的,因此,您的浏览器不信任您作为有效证书权威。

但是我们通常应该将此过程用于开发目的,而对于生产,我们应该使用由证书颁发机构生成的证书。


相关文章
|
4月前
|
安全 数据建模 应用服务中间件
阿里云SSL证书价格、证书类型及免费版证书申请和证书部署教程参考
阿里云SSL证书有收费版也有免费版,收费版DV域名级SSL类型405元起,免费版证书为DV域名级SSL类型,每个实名个人和企业主体在一个自然年内可以一次性领取20张免费证书。本文为大家详细介绍阿里云SSL证书价格情况,包括不同域名类型、证书类型、证书等级和证书品牌的相关收费标准,以及免费版证书的申请和部署教程参考。
|
8月前
|
安全 算法 网络协议
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
|
7月前
|
算法 应用服务中间件 网络安全
阿里云WoSign“国密RSA双SSL证书”应用实践
阿里云WoSign品牌SSL证书是阿里云平台热销的国产品牌证书之一,支持签发国密合规的SM2算法SSL证书以及全球信任的RSA算法SSL证书,能够满足平台用户不同的SSL证书应用需求,同时为用户提供国密模块支持,实现“国密/RSA双证书部署”。
651 6
阿里云WoSign“国密RSA双SSL证书”应用实践
|
7月前
|
算法 安全 应用服务中间件
2025阿里云智惠采购季,WoSign SSL国产证书折上折满减优惠
**2025阿里云“智慧采购季,就上阿里云”活动火热进行中!** 3月1日至31日,阿里云WoSign品牌SSL证书新老用户同享折上折满减优惠。DV SSL证书低至220元/年起,轻松实现HTTPS加密,保障数据传输安全。领取“智惠采购季上云礼包”,先领券再下单,享受满减优惠。WoSign品牌SSL证书国密RSA双算法支持,确保广泛兼容与可靠部署。
821 2
2025阿里云智惠采购季,WoSign SSL国产证书折上折满减优惠
|
7月前
|
运维 安全 网络安全
【运维实战分享】轻松搞定 SSL 证书管理,告别证书繁琐操作
Spug证书平台的最大亮点之一就是其极为简化的证书申请流程,无论是新手还是经验丰富的运维专家,都可以在几分钟内轻松完成证书的申请,通过微信扫码直接登录申请,无需复杂注册,整个过程既方便又快捷。
181 17
|
9月前
|
数据建模 网络安全
阿里云SSL证书不同类型DV、OV和EV如何收费?单域名和通配符SSL价格整理
阿里云SSL证书提供免费和收费版本,涵盖DV、OV、EV多种类型。收费证书品牌包括DigiCert、GlobalSign等,价格从238元/年起。免费SSL证书由Digicert提供,单域名有效3个月,每个实名主体每年可领取20个。具体价格和详情见阿里云SSL官方页面。
|
7月前
|
运维 安全 数据建模
阿里云数字证书管理服务免费版和收费版SSL证书区别、收费标准、申请及部署教程参考
阿里云数字证书管理服务提供多种SSL证书类型和品牌,适用于不同规模的网站,包括但不限于电商、小型企业、大型企业或个人等。阿里云SSL证书有收费版的也有免费版的,有的新手用户由于是初次在阿里云申请SSL证书,可能不是很清楚免费版证书的申请和部署流程,本文为以图文形式为大家展示阿里云免费版SSL证书最新的申请及部署教程,以供参考。
|
7月前
|
算法 数据建模 应用服务中间件
阿里云2025智惠采购季,WoSign SSL证书优惠叠加使用攻略
阿里云2025智惠采购季,WoSign SSL证书折上折满减优惠!活动月期间(2025年03月01日至03月31日)活动折扣叠加满减优惠券,具体如何操作才能获取组合优惠价格呢?快来get优惠券组合使用攻略吧!
578 4
|
8月前
|
云安全 运维 安全
阿里云免费版SSL证书申请及部署图文教程指导
SSL证书是个人和企业搭建网站不可或缺的云安全产品,SSL证书能够为网站和移动应用(APP)及小程序提供数据HTTPS加密协议访问,保障数据的安全。阿里云SSL证书有收费版的也有免费版的,有的新手用户由于是初次在阿里云申请SSL证书,可能不是很清楚免费版证书的申请和部署流程,本文为以图文形式为大家展示阿里云免费版SSL证书最新的申请及部署教程,以供参考。
|
8月前
|
安全 搜索推荐 网络安全
免费SSL证书:一键加密,守护网站安全
在互联网时代,网站安全至关重要。SSL证书是保护网站数据传输安全的核心工具,提供数据加密、提升信任度、提高搜索引擎排名及避免“不安全”警告等多重优势。现在,您可以通过JoySSL官网免费获取SSL证书,只需注册并填写注策码(230907),即可一键加密,轻松守护网站安全,提升用户体验和品牌形象。立即行动,为您的网站穿上“安全防护衣”!
147 11