增强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安全性。

相关推荐
游戏开发爱好者83 小时前
开心上架是什么,一站式 Apple 开发者工作台总览
android·小程序·https·uni-app·iphone·webview
游戏开发爱好者819 小时前
WebSocket 抓包怎么查看内容?从握手到消息帧完整解读
网络协议·计算机网络·网络安全·ios·adb·https·udp
外滩运维专家21 小时前
通配符证书到期,阿里云上几个服务的证书怎么一次换完
运维·开发语言·nginx·https·php·消息推送
J_bean1 天前
HTTPS (TLS1.2 RSA 模式) 握手流程
https·tls1.3·tls1.2·https 握手流程
qq10916069811 天前
nginx+TongWeb 配置非443端口的https
网络·nginx·https
00后程序员张1 天前
Windows / Linux / Mac 上不用 Xcode 把 IPA 上传到 App Store,upload 命令详解
android·ios·小程序·https·uni-app·iphone·webview
00后程序员张2 天前
SSL Pinning 抓包抓不到明文?绕过证书固定的几种方案
网络协议·计算机网络·网络安全·ios·adb·https·udp
__zRainy__2 天前
Node系列 · Node基础:https 模块
后端·网络协议·http·https·node.js
阿pin3 天前
HTTP 与 HTTPS 详解
网络协议·http·https
一条泥憨鱼3 天前
【从0开始学习计算机网络】| CA证书、数字签名与中间人攻击:一次完整的安全握手之旅
计算机网络·安全·http·https