增强HTTPS的安全性

说明

日期:2026年3月10日

HTTP有多种密码套件;TLS 有多个版本,我们需要使用安全性最强的,禁止使用安全性弱的。

示例

操作系统:Alibaba Cloud Linux 3.2104 LTS 64位。

应用:node.js v22.15.1

javascript 复制代码
// 没有额外增强要求的HTTPS服务器创建方式
const https = require('https');

const PORT = Number(process.env.PORT || 12121);

function createServer() {
  const keyPath = process.env.SSL_KEY_PATH || '/home/ecs-user/ssl_certificate/privkey.pem';
  const certPath = process.env.SSL_CERT_PATH || '/home/ecs-user/ssl_certificate/fullchain.pem';
      const credentials = {
      key: fs.readFileSync(keyPath),
      cert: fs.readFileSync(certPath)
    };
  return https.createServer(credentials, app);
}

const server = createServer().listen(PORT, HOST, () => {
  const protocol = server instanceof https.Server ? 'https' : 'http';
  console.log(`${protocol.toUpperCase()} server successfully launched: ${protocol}://localhost:${PORT}`);
});

增加额外的安全要求

javascript 复制代码
const https = require('https');

const PORT = Number(process.env.PORT || 12121);

function createServer() {
  const keyPath = process.env.SSL_KEY_PATH || '/home/ecs-user/ssl_certificate/privkey.pem';
  const certPath = process.env.SSL_CERT_PATH || '/home/ecs-user/ssl_certificate/fullchain.pem';
      const credentials = {
      key: fs.readFileSync(keyPath),
      cert: fs.readFileSync(certPath),
      ciphers: [
        'ECDHE-ECDSA-AES128-GCM-SHA256',
        'ECDHE-RSA-AES128-GCM-SHA256',
        'ECDHE-ECDSA-AES256-GCM-SHA384',
        'ECDHE-RSA-AES256-GCM-SHA384',
        'ECDHE-ECDSA-CHACHA20-POLY1305',
        'ECDHE-RSA-CHACHA20-POLY1305',
        'DHE-RSA-AES128-GCM-SHA256',
        'DHE-RSA-AES256-GCM-SHA384',
      ].join(':'),
      ecdhCurve: 'secp384r1:prime256v1',
      minVersion: 'TLSv1.2',
      maxVersion: 'TLSv1.3',
      honorCipherOrder: true,
    };
  return https.createServer(credentials, app);
}

const server = createServer().listen(PORT, HOST, () => {
  const protocol = server instanceof https.Server ? 'https' : 'http';
  console.log(`${protocol.toUpperCase()} server successfully launched: ${protocol}://localhost:${PORT}`);
});

主要修改内容

  1. 弃用基于RSA的密钥交换

    • 配置中只保留了 ECDHE 和 DHE 密码套件,完全移除了 RSA 密钥交换
  2. 使用安全密码套件

    • 添加了经过安全审查的密码套件列表,包括:
      • ECDHE-ECDSA-AES128-GCM-SHA256
      • ECDHE-RSA-AES128-GCM-SHA256
      • ECDHE-ECDSA-AES256-GCM-SHA384
      • ECDHE-RSA-AES256-GCM-SHA384
      • ECDHE-ECDSA-CHACHA20-POLY1305
      • ECDHE-RSA-CHACHA20-POLY1305
      • DHE-RSA-AES128-GCM-SHA256
      • DHE-RSA-AES256-GCM-SHA384
  3. 支持PFS(前向保密)

    • 配置了 ecdhCurve: 'secp384r1:prime256v1' 支持椭圆曲线密钥交换
    • 所有密码套件都使用 ECDHE 或 DHE 临时密钥交换,提供完全前向保密
  4. 其他安全增强

    • 限制 TLS 版本为 1.2 到 1.3(minVersion: 'TLSv1.2', maxVersion: 'TLSv1.3'
    • 启用 honorCipherOrder: true,确保服务器优先使用更强的密码套件

这些修改将显著提升web应用的TLS/SSL安全性。

相关推荐
00后程序员张2 小时前
iOS 应用的 HTTPS 连接端口在网络抓包调试中有什么作用
android·网络·ios·小程序·https·uni-app·iphone
闻道且行之12 小时前
Nginx 安装、做成服务及 HTTPS 配置全流程
linux·运维·nginx·https
2501_9159184112 小时前
iOS App HTTPS 抓包工具,代理抓包和数据线直连 iPhone 抓包的流程
android·ios·小程序·https·uni-app·iphone·webview
捧 花13 小时前
Go + Gin 实现 HTTPS 与 WebSocket 实时通信
websocket·golang·https·go·gin
※DX3906※13 小时前
后端开发必会计算机网络中的应用层协议 - HTTP/HTTPS
java·网络·ide·网络协议·计算机网络·http·https
二月夜14 小时前
HTTPS页面中img标签图片无法显示的问题排查与彻底解决
网络协议·http·https·图片
小时前端9 天前
HTTPS 页面加载 HTTP 脚本被拦?同源代理来救场
前端·https
赤月奇14 天前
https改为http
数据挖掘·https·ssl