在今天的互联网时代,随着网站和应用程序越来越多地涉及到个人隐私和敏感数据,HTTPS 成为了必不可少的一部分。 它可以确保数据在传输过程中被加密保护,并且可以保护用户的信用卡信息,登录凭据等。
Express.js 是一个非常流行的 Node.js web 框架,它允许我们轻松构建服务器端应用程序。 默认情况下,Express.js 框架仅支持 HTTP 连接,但是我们可以使用 HTTPS 连接来保护我们的应用程序。
在这篇文章中,我们将学习如何使用 Express.js 框架和 Node.js 内置的 HTTPS 模块来启用 HTTPS 连接。我们将覆盖以下主题:
- 什么是 HTTPS?
- 为什么需要使用 HTTPS?
- 如何在 Express.js 中启用 HTTPS?
- 自签名 SSL 证书的使用
- 将 HTTPS 连接重定向到 HTTPS 服务
什么是 HTTPS?
HTTPS,全称为 Hypertext Transfer Protocol Secure,是一个通过 SSL 或 TLS 加密传输数据的通信协议。
为什么需要使用 HTTPS?
HTTP 是一种明文协议,任何人都可以抓取我们的数据。 相反,HTTPS 是一种加密协议,它通过 SSL 或 TLS 加密传输数据,因此黑客无法嗅探我们的通信。 此外,目前许多浏览器都会通过警告等提示来告知用户其正在进行不安全的连接,从而影响用户体验。因此,使用 HTTPS 可以避免这一问题。
如何在 Express.js 中启用 HTTPS?
Express.js 可以使用 Node.js 中的 HTTPS 模块支持 HTTPS 连接。 HTTPS 模块是一个核心模块,我们不需要单独安装它。
下面是启用 Express.js 中 HTTPS 的示例代码:
-- -------------------- ---- ------- ----- ----- - ----------------- ----- -- - -------------- ----- ------- - ------------------- ----- --- - ---------- ----- ------- - - ---- -------------------------- ----- ------------------------- -- ----- ------ - --------------------------- ----- ------------------- -- -- - ------------------ ------ ------- -- ---- ------- ---
我们首先引入了 Node.js 内置的 HTTPS 模块和文件系统模块。 然后,我们创建了一个 Express.js 应用程序,创建了包含“key”和“cert”的 options 对象,并将它传递给 createServer 方法。 “key”是包含 SSL 私钥的文件路径,“cert”是包含 SSL 证书的路径。
启动 HTTPS 服务后,我们将其监听在本地的 8443 端口上。 完成了这些步骤后,您的Express.js 应用程序就已启用HTTPS连接了!
自签名 SSL 证书的使用
自签名 SSL 证书是一种不依赖于任何第三方证书颁发机构(CA)签署的 SSL 证书。 我们可以使用 OpenSSL 实用程序来创建自签名 SSL 证书。 让我们看一下如何使用 OpenSSL 工具来创建一个自签名证书:
openssl genrsa -out key.pem 2048 openssl req -new -key key.pem -out csr.pem openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out cert.pem
在运行了上面的三个命令之后,您将会得到两个文件 key.pem 和 cert.pem。
下一步,我们需要将证书和密钥路径添加到 options 对象中:
const options = { key: fs.readFileSync('key.pem'), cert: fs.readFileSync('cert.pem') };
将 HTTP 连接重定向到 HTTPS 服务
为了防止请求通过不安全的 HTTP 连接进入我们的系统,我们需要将 HTTP 连接重定向到 HTTPS 服务。 我们可以使用 Express.js 的中间件来完成此操作。 下面是一个将所有 HTTP 请求重定向到 HTTPS 的示例代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----- - ----------------- ----- ---- - ---------------- ----- -- - -------------- ----- --- - ---------- ----- ------------ - - ---- ----------------------------- ----- ----------------------------- -- ----- -------- - ----- ----- --------- - ----- ----- ------------ - ----- ---- ----- -- - -- ------------- --- -------- - ------ -------------------------------------------------------- - ------- -- ---------------------- ------------ ----- ---- -- - --------------- --------- --- --------------------------------------- -- -- - -------------------- --- --------- -- ---- ------------ -------- --- -------------------------------- ---------------------- -- -- - -------------------- --- --------- -- ---- ------------- --------- ---
在上面的示例代码中,我们使用 redirectHttp 中间件来检查请求是否是通过 HTTPS 发送的。 如果是 HTTP 请求,则我们将客户端重定向到 HTTPS 连接。
完成以上步骤后,你的 Express.js 应用程序就可以免费的获取 HTTPS 加密连接了!
结论
在这篇文章中,我们介绍了如何在 Express.js 应用程序中启用 HTTPS 加密连接,以保护您网站的客户端和服务器端的通信。 我们还介绍了如何使用自签名 SSL 证书以及如何通过中间件将 HTTP 连接重定向到 HTTPS 连接。希望这篇文章能对你学习和理解如何使用 Express.js 来配置 HTTPS 很有帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674c2fae14b275ea6fe81b58