说明
日期: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}`);
});
主要修改内容
-
弃用基于RSA的密钥交换
- 配置中只保留了 ECDHE 和 DHE 密码套件,完全移除了 RSA 密钥交换
-
使用安全密码套件
- 添加了经过安全审查的密码套件列表,包括:
- 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
- 添加了经过安全审查的密码套件列表,包括:
-
支持PFS(前向保密)
- 配置了
ecdhCurve: 'secp384r1:prime256v1'支持椭圆曲线密钥交换 - 所有密码套件都使用 ECDHE 或 DHE 临时密钥交换,提供完全前向保密
- 配置了
-
其他安全增强
- 限制 TLS 版本为 1.2 到 1.3(
minVersion: 'TLSv1.2', maxVersion: 'TLSv1.3') - 启用
honorCipherOrder: true,确保服务器优先使用更强的密码套件
- 限制 TLS 版本为 1.2 到 1.3(
这些修改将显著提升web应用的TLS/SSL安全性。