在应用里需要密钥与公钥文件里的内容,可以使用 Node.js 提供的 fs 模块读取文件里的内容。我们也可以把密钥与公钥文件的内容放在环境变量里,然后让应用使用环境变量里的密钥与公钥,不过有个问题是环境变量文件不支持多行,所以我们可以把文件里的内容转换成 Base64 格式的,然后在应用里读取到 Base64 格式的密钥与公钥内容之后,可以再把它们转换成原来的样子。
读取密钥与公钥文件内容,把它们转换成 Base64 格式,可以把这个功能单独放在一个 .js 文件,执行它的结果就是在控制台上输出转换之后的内容,这样我们就可以复制转换之后的内容,然后配置 .env 文件。
在 config 下面,新建一个 js 文件,名字是 convert.key.js,在这个文件的顶部先导入 Node.js 提供的 fs 模块,也就是文件系统模块,它可以处理文件内容。再导入 Node.js 里提供的 path 模块,用它可以组织文件的路径。
下面要做的就是用 fs 模块提供的功能读取密钥还有公钥文件的内容,添加一个 privateKey,它的值可以用一下 fs 上的 readFileSync 方法,读取一个文件,要读取的文件路径可以用 path 模块上的 join 方法组织一下,是在 config 目录的下面,文件是 private.key。
复制一份,再添加一个 publicKey,这次要读取的文件是在 config 目录里的 public.key 。
然后我们要做的是把读取的文件内容转换成 Base64 格式的。可以添加一个 privateKeyBase64,它的值用一下 Buffer.from 要处理的内容是 privateKey,调用一下 toString 这个方法,把内容转换成 base64 格式的。
复制一份,再修改一下,添加一个 publicKeyBase64, 要转换的内容是 publicKey ,同样转换成 base64 格式的。
最后可以在控制台上输出转换之后的结果,先用一个 console.log 输出一行文字,反斜线 n 表示输出一个空行。然后是 Private Key 。下面可以再用一个 console.log 输出 privateKeyBase64
复制一份,修改一下,输出一行文字,Public Key,下面可以再输出转换之后的 publicKeyBase64
回到终端,确定当前的位置,是在项目的 config 目录里面,回到项目的根目录,也就是当前目录的上一级目录。
执行一下 node config/convert.key
这里会输出转换成 Base64 格式的密钥还有公钥文件的内容。
先复制一下 Private Key 下面的这行内容,这个是转换之后的密钥。 打开项目里的 .env 这个环境变量文件,里面可以添加点新的配置。
添加一个 PRIVATE_KEY 把刚才复制的值交给它。 下面再添加一个 PUBLIC_KEY,回到终端,复制一下 Public Key 下面的这行内容。这个是转换成 Base64 格式的公钥内容。
把它交给这个 PUBLIC_KEY 环境变量。
然后打开应用的配置, src/app 下面的 app.config ,打开以后可以做点密钥相关的配置,这里 export 两个配置,用 let 定义它们,一个是 PRIVATE_KEY 还有一个 PUBLIC_KEY ,从环境变量里把它们解构出来。
它们的值是 Base64 格式的,所以解码之后才能用,设置一下 PRIVATE_KEY 的值,用一下 Buffer.from ,内容是 PRIVATE_KEY,格式是 base64,调用 toString() 。再复制一份,设置一下 PUBLIC_KEY 的值,要转换的内容是 PUBLIC_KEY ,它的格式也是 base64,这样会把 Base64 格式的数据转换成数据原本的样子。