首页 > web前端 > js教程 > 如何使用node.js使用SSL/TLS

如何使用node.js使用SSL/TLS

Jennifer Aniston
发布: 2025-02-10 13:06:35
原创
598 人浏览过

本文说明了如何使用Let's Encrypt证书使用https保护您的Express.js服务器,并通过HST和更强大的Diffie-Hellman参数来进一步增强安全性。>>>>>>

How to Use SSL/TLS with Node.js 在当今的数字景观中,https是不可谈判的。 用户,Google排名因素和浏览器的预期,积极强调缺乏该网站。本教程演示了在您的express.js应用程序中添加让我们加密证书。 但是,客户端的安全至关重要。即使默认情况下未启用,我们也会探索加密的连接到外部服务器。

(注意:对于使用节点应用程序的nginx反向代理SSL设置,请参阅我们的快速提示,“用node.js配置nginx和ssl”。

钥匙要点:

HTTPS HTTPS对于2020年及以后的网站安全至关重要,提供身份验证,隐私,机密性和数据完整性。 这是Google的排名因素和用户期望。

> node.js默认为http,但是
    模块启用了安全的客户端通信。这需要SSL证书,很容易获得,并且没有让Let's Encrypt。 certbot简化了我们加密证书生成和管理,验证证书持有人的真实性是否为安全客户端服务器连接。 通过头盔节点模块实现的 通过生成更长的(2048位)diffie-hellman密钥来增强httpsssl/tls安全性。
  • https到处都是:
  • > HTTP/2标准(RFC 7540,2015年5月)授权加密,使HTTPS默认。 这增加了HTTPS的采用。 从浏览器的角度来看,达到IP级别涉及以下层:>
  • 客户端浏览器

http > ssl/tls

> tcp

    ip
  1. https是SSL/TLS上的http,在添加http规则时添加:通过键和证书验证;对隐私和机密性进行加密的,不对称的沟通;和通过防篡改传输的数据完整性。 与过去的看法相反,SSL/TLS开销也很小,即使对于Google(例如1%的CPU负载和2%的网络开销)等大型操作也是如此。 正如伊利亚·格里戈里克(Ilya Grigorik)恰当地说,唯一的性能瓶颈是https的使用不足。

    > TLS 1.3是最新版本,成功的SSL 3.0(尽管无法互操作)。 它使用三个加密通道:证书链,用于密钥交换的公共密钥加密以及用于数据传输的对称密码学。 建议使用SHA2或更强的哈希算法(SHA1已过时)。 不断增长的数据泄露了用户对增强在线安全性的需求。 EFF的HTTP到处都是浏览器扩展程序在可能的情况下强制加密,包括重写部分HTTPS支持或完全阻止HTTP的站点的请求。>

    How to Use SSL/TLS with Node.js

    基本通信:

    证书验证涉及验证签名,到期日期,可信赖的根链和撤销状态。 受信任的证书机构(CAS)发行证书; CA的妥协撤销了所有证书。 HTTPS握手序列:客户端初始化,证书和密钥交换消息,客户端键交换和密码规范,服务器确认和握手闭合。

    >

    How to Use SSL/TLS with Node.js

    这个序列与HTTP无关; https只会改变插座处理。 仍然存在HTTP请求,但插座加密内容(标题和正文)。 Express.js中的

    https实现

    > node.js使用>模块进行安全通信。 它的用法反映了>模块:

    https>用生成的证书路径替换http>

    (以下说明)。
    const https = require("https"),
      fs = require("fs");
    
    const options = {
      key: fs.readFileSync("/srv/www/keys/my-site-key.pem"),
      cert: fs.readFileSync("/srv/www/keys/chain.pem")
    };
    
    const app = express();
    
    app.use((req, res) => {
      res.writeHead(200);
      res.end("hello world\n");
    });
    
    app.listen(8000);
    
    https.createServer(options, app).listen(8080);
    登录后复制
    >

    /srv/www/keys/my-site-key.pem> certbot证书生成:/srv/www/keys/chain.pem

    >

    certbot自动化,让我们加密证书生成和管理。 安装certbot(指令因OS而变化;此示例使用Ubuntu):>

    插件简化了证书生成和验证。 运行:

    sudo apt-get update
    sudo apt-get install software-properties-common
    sudo add-apt-repository universe
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update
    登录后复制
    提供您的电子邮件地址。 输出显示了您的私钥和证书文件的路径;在上面的

    对象中使用这些。certonly --webroot>

    certbot certonly --webroot -w /var/www/example/ -d www.example.com -d example.com
    登录后复制
    安全增强:

    options

    > http严格的运输安全性(HSTS):使用头盔中间件:>

    • >使用openssl生成2048位DH键:
    const helmet = require("helmet");
    // ...
    app.use(helmet());
    登录后复制
    • >将添加到>对象:
    • >
    openssl dhparam -out /var/www/example/sslcert/dh-strong.pem 2048
    登录后复制

    结论: dhparam optionshttps是必不可少的。 Node.js为安全Web应用程序提供了强大的SSL/TLS选项。 让我们加密简化证书管理,而HST和更强大的DH参数进一步增强了安全性。

    >

    > FAQS部分已被省略,但提供的信息涵盖了原始文本的核心方面。

以上是如何使用node.js使用SSL/TLS的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板