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

相关推荐
CodeYp201910 小时前
第13讲:HTTPS 协议原理
linux·https
Thanks_ks12 小时前
HTTPS:浏览器地址栏那把锁的工作原理
http·网络安全·https·tls·加密算法·数字证书·中间人攻击
阿星_4 天前
pydio登陆不了分析问题
网络协议·http·https
陈希1235 天前
Nginx 从入门到能扛事:反向代理、负载均衡与 HTTPS 实战
nginx·https·负载均衡
FungLeo6 天前
成为全栈·基础补充·域名、DNS 与 HTTPS 证书
https·网络基础·网站部署·tls证书·成为全栈·域名 dns
Lsetea8 天前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书
2501_9160088910 天前
iPhone 设备信息查看,用 KeyMob 看型号、序列号、电池健康和 UDID
android·ios·小程序·https·uni-app·iphone·webview
李纲明11 天前
WordPress 登录后跳回登录页或提示「Cookie 被阻止」:先核站点 URL 与 HTTPS 一致,再查安全插件与 CDN
https·登录·cdn·wordpress·cookie·devdiy·站点url
李纲明12 天前
WordPress 全站 HTTPS 后仍显示「不安全」或锁被划掉:先清混合内容,再核证书链与强制跳转
网络协议·安全·https·wordpress·devdiy·混合内容
Lsetea12 天前
Certbot webroot申请SSL证书总是404:Nginx挑战目录与路径映射检查
运维·nginx·https·ssl证书·certbot