Fastify:如何安全地为你的应用程序添加 HTTPS

阅读时长 6 分钟读完

在今天的网络世界中,保护用户数据的安全变得愈发重要。随着更多的人们意识到数据隐私的重要性,越来越多的网站开始启用 HTTPS 来确保数据的传输过程中的安全性。同时,搜索引擎和浏览器厂商也开始将 HTTPS 作为网站排名和安全性的一个指标。

然而,对于许多前端开发者来说,如何在应用程序中启用 HTTPS 却是一个相对新的领域。Fastify 是一个快速、低开销且易于使用的 Node.js Web 框架,它为我们提供了一种简单的方法来添加 HTTPS 支持,让我们的应用程序更加安全。

本文将介绍如何在 Fastify 中为你的应用程序添加 HTTPS,具体的讲解内容如下:

  • HTTPS 的前置知识介绍
  • Fastify 中的 HTTPS 支持
  • 用 Node.js、Fastify 和 Let's Encrypt 进行 HTTPS 部署的示例

HTTPS 的前置知识介绍

在了解如何为 Fastify 应用程序添加 HTTPS 应该先对 HTTPS 有一个基本的了解,以下是一些关于 HTTPS 最基本的认识:

HTTPS(Hyper Text Transfer Protocol Secure)是一个基于 TLS/SSL 协议的加密通信协议。它使用公钥密码学来加密数据传输过程中的数据,并使用数字证书来验证通信过程中双方的身份。相对于普通的 HTTP 协议,HTTPS 更加安全,更加难以窃取通信中的数据,保障了用户数据的安全性。

要使用 HTTPS 通信,需要满足以下条件:

  • 申请一个有效的数字证书。
  • 在服务器上安装证书。
  • 配置服务器以便它能够支持 HTTPS。

了解了这些基础知识之后,我们可以开始探索如何将 HTTPS 应用到一个 Fastify 应用程序中。

Fastify 中的 HTTPS 支持

Fastify 提供了一种简单的方法来添加 HTTPS 支持。可以使用 fastify 模块的 listen 方法来指定对应的 keycert,代码示例如下所示:

-- -------------------- ---- -------
----- ------- - -------------------- 
  ------- -----
  ------ -
    ---- ----------------------------------- -- --
    ----- ----------------------------------- -- --
  -
---

---------------- ----- ------ -- -
  ------------ ------ ------- ---
---

-------------------- ----- -------- -- -
  -- ----- -
    -----------------------
    ----------------
  -
  ------------------------- ------ ------- -- -------------
---
展开代码

可以看到,这里我们通过在 https 中传入证书和私钥路径来启用 HTTPS 在应用程序中启用 HTTPS 支持。

这里有一些额外的东西需要了解一下:

  • 要想在本地用 HTTPS 访问反向代理(例如 nginx)转发的 Fastify Server,需要在 nginx 的反向代理中添加对 HTTPS 协议的支持。具体配置可以参考 nginx 的官方文档。

  • 需要将证书和私钥文件的访问权限设置为 400。

现在我们可以启动这个 Fastify 应用程序并在其中使用 https 协议进行本地访问和部署了。

用 Node.js、Fastify 和 Let's Encrypt 进行 HTTPS 部署的示例

我们已经了解了如何通过 fastify 实现 HTTPS,这里介绍一种实际生产环境中 HTTPS 应用部署的实现方法。

在让我们的应用程序使用 HTTPS 之前,需要满足以下条件:

  • 获得一个有效的 SSL/TLS 证书。实现方法之一是使用免费证书颁发机构 Lets Encrypt,这在下文将会具体实现。
  • 将应用程序正确配置,以使之支持 HTTPS。

安装 Certbot

Certbot 是一个免费的(开源)工具,用于自动从 Let's Encrypt 获得 TLS 证书。我们将使用它来在我们的服务器上获取和安装免费的证书。

在 Ubuntu 系统上,可以使用 apt 包管理器来安装 Certbot。在终端中运行以下命令:

在 Fastify 服务器上启用 HTTPS

在我们的 Fastify 服务器中,需要在 https 属性中指定证书和私钥路径。

获取 Let's Encrypt 证书

Certbot 可以使用网络 API 从 Let's Encrypt 获得免费证书并将其正确安装到您的服务器上。

在终端中输入以下命令启动 Certbot:

其中:

  • webroot 是 Certbot 内部的一个插件,它通过检查位于文档根目录中的文件来验证您是否拥有控制权。
  • -w 指定您的网站实际存储在的 Web 根目录。

上面的命令将在您的 Web 根目录中创建一个 .well-known/acme-challenge 目录,以托管 Let's Encrypt API 需要验证的暂时文件。一旦这些文件被检测到,证书会自动签发并下载到您的服务器上。

最后,Certbot 会为你生成有效期为 90 天的证书和私钥,存储在 /etc/letsencrypt/live/ 目录下。

自动化证书更新

通过使用 Certbot 的自动化功能,可以使证书得到自动的续期,避免证书的过期。

使用 Certbot 的自动化功能,只需要运行一条命令:

此命令会自动检查 Certbot 设定的之前的证书并自动完成其中的更新。注意要定期运行此命令以确保 your HTTPS 证书得到充分的更新。

结语

在本文中,我们了解了如何将 HTTPS 添加到 Fastify 应用程序中以使其更加安全。我们还介绍了使用 Certbot 从 Let's Encrypt 获得 TLS 证书的过程,并最终更新您的服务器以自动获取并更新证书。希望这些知识能帮助您使您的应用程序更加安全,更受用户信任。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c1cd5c314edc2684a91a3b

纠错
反馈

纠错反馈