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

相关推荐
Zelman3 小时前
协议栈数据流全景分析
网络协议·tcp/ip·https
Lsetea9 小时前
OpenSSL报path length constraint exceeded:CA层级与pathlen排查
运维·https·ssl证书·openssl·证书链
Lsetea12 小时前
OpenSSL s_client退出码为0却证书验证失败:严格校验与Shell管道排查
https·shell·ssl证书·openssl·tls
Lsetea13 小时前
OpenSSL报permitted subtree violation:证书SAN与CA名称约束排查
运维·https·ssl证书·openssl·证书链
2501_916007471 天前
苹果应用商店App Store上架费用标准及原因解析
android·ios·小程序·https·uni-app·iphone·webview
zxanz12 天前
https 的基本原理是什么样的?
网络协议·http·https
Lsetea2 天前
OpenSSL verify报error 20:CAfile、fullchain与本地信任链分层排查
nginx·https·ssl证书·openssl·证书链
00后程序员张2 天前
苹果App Store上架指南:费用、原理与步骤详解
android·ios·小程序·https·uni-app·iphone·webview
春天花会开1314 天前
内网 HTTPS 部署实战:私有 CA + Nginx 反向代理全流程复盘
运维·nginx·https
2501_916007479 天前
苹果商店iOS应用上架费用全面解析:开发者计划与审核费用计算
android·ios·小程序·https·uni-app·iphone·webview