强制 node.js 使用 OpenSSL 的非发行版副本

Force node.js to use non-distro copy of OpenSSL

是否可以让 Node.js 使用我自己编译的本地 OpenSSL 版本?我可以用环境变量或其他方式设置它吗?

我必须使用较旧的 Node.js 版本,但要使用自己编译的 OpenSSL 版本。

node -pe process.versions

告诉我,Node.js 正在使用较旧的 OpenSSL 库。

Is there a possibility to make Node.js to use my own compiled, local OpenSSL version?

是的。

在 Linux 上,使用 LD_LIBRARY_PATH. On OS X use, DYLD_LIBRARY_PATH

一定要选择一个新的 OpenSSL,该 OpenSSL 与 Node.js link 反对的任何内容都二进制兼容。例如,OpenSSL 0.9.7 和 0.9.8 是二进制兼容的,但与 1.0.0、1.0.1、1.0.2 或 1.1.0 等其他版本不兼容。并且 OpenSSL 1.0.0、1.0.1 和 1.0.2 是二进制兼容的。

或者,从源构建 Node.js 并静态 link 到您选择的 OpenSSL 版本。它将避免 LD 预加载技巧。 (我在旁边踩 -rpath 因为它在 OS X 上不起作用)。