首页 > 解决方案 > 从数组中为 NodeJS 中的 SSL 加密常量构建按位 OR 字符串

问题描述

我有一个应用程序,它为用户可能想要自己设置的选项使用单独的配置文件。最近我被要求包含定义 TLS 设置的能力。我希望我的配置文件有一个数组变量,允许用户输入所需的加密常量,并让我的应用程序获取该数组变量并为服务器实例构建一个按位 OR 字符串。以下是我正在尝试做的简化版本。实际上,“httpsOpts”将位于单独的文件中,但这与示例无关。我将如何实现预期的结果?

const https = require('https');
const crypto = require('crypto');
const express = require('express');

const sslOpts = ['SSL_OP_NO_TLSv1','SSL_OP_NO_TLSv1_1'];
let httpsOpts = {};

httpsOpts.secureOptions = ''; // build the following: crypto.SSL_OP_NO_TLSv1 | crypto.SSL_OP_NO_TLSv1_1

const app = express();
const webServer = https.createServer(httpsOpts, app);

标签: javascriptnode.jsexpress

解决方案


所以这就是我想出来的,以防其他人有同样的问题。我确信有更好的答案,因为这涉及到可怕的“评估”,但这是我现在得到的。

let _opts = '';
sslOpts.forEach((v,i) => {
    _opts+='crypto.constants.'+v;
    if (i < sslOpts.length-1) _opts+=' | ';
});
httpsOpts.secureOptions = eval(_opts);

推荐阅读