Node.js 如何使用SSL/TLS
TLS/SSL用于在互联网上建立安全连接。如今,大多数网站使用HTTPS与客户端通信。HTTPS基本上是在TLS/SSL上运行的HTTP。像浏览器这样的网页客户端会向用户提示不使用HTTPS的网站,因为这些网站容易受到网络攻击。因此,我们必须确保我们的Web应用程序在HTTPS上运行。要设置HTTPS服务器,我们需要一个SSL/TLS证书。本文简要介绍如何在Node.js中使用SSL/TLS。
我们将构建两个简单的表达式应用程序,分别运行一个HTTP服务器和一个HTTPS服务器。导入所需的模块并设置HTTP服务器。我们创建一个server.js文件,并将以下代码添加到其中。
server.js
输出: 执行上面的代码后,我们可以前往localhost:3000查看应用程序。
上面的应用程序不安全,因为它在普通的HTTP上运行。如果我们点击URL左边的符号,我们可以看到以下内容。
生成自签名证书: 要生成自签名证书,我们需要以下内容 –
- 私钥
- CSR(证书签名请求)
- TLS / SSL证书
我们将使用OpenSSL https://www.geeksforgeeks.org/practical-uses-of-openssl-command-in-linux/?ref=gcse 来创建私钥和证书。请确保以管理员身份执行以下命令。
步骤1: 创建私钥。
步骤2: 创建CSR
这个命令主要用于创建和处理证书签名请求(CSR)。
-new -> 它告诉openssl生成一个新的CSR。
-key -> 它指定了私钥的位置。生成相应的公钥需要私钥。
-out -> 它用于指定存储CSR的位置。
证书签发请求(CSR)包含证书颁发机构所需的重要信息,如上图所示。它还包括用于加密数据的您的网站/应用程序的公钥。然而,私钥不是CSR的一部分。
步骤3: 创建SSL证书
设置HTTPS服务器: 在创建HTTPS服务器时,我们必须在https.createServer()方法中指定私钥和SSL/TLS证书。同样,在server.js文件中,我们将添加以下代码。
输出: 我们可以在 localhost:3001 上查看应用程序。
尽管我们使用了SSL/TLS证书,但浏览器仍然显示为不安全。原因是我们创建了一个自签名证书。像Google Chrome这样的浏览器只信任由经过认证的证书颁发机构(如Let’s Encrypt,DigiCert等)签名的证书。
因此,在创建一个将要部署到生产环境中的应用程序时,我们必须只使用由授权证书颁发机构签发的证书。