如何在我的应用程序中忽略 OPENSSL_ENGINES 环境变量?
How to ignore an OPENSSL_ENGINES environment variable in my app?
我在我的 C++ 应用程序中使用 openssl 库。我发现了如何忽略 OPENSSL_CONF
环境变量。可以通过指定我自己的配置文件来实现:
OPENSSL_config("openssl.cnf");
但是 OPENSSL_ENGINES
环境变量呢?在我的应用程序中如何忽略它的价值?如何防止从该路径加载引擎?
我查看了 openssl 来源。默认情况下有OPENSSL_ENGINES
变量读取,没有任何条件。
...
if ((load_dir = getenv("OPENSSL_ENGINES")) == 0)
load_dir = ENGINESDIR;
...
OpenSSL 似乎没有公开忽略该环境变量的正确方法。作为解决方法,您可以在调用 ENGINE_by_id()
之前自行将该环境变量设置为某个虚假值,如下所示:
putenv("OPENSSL_ENGINES=/dev/null");
您必须小心一点,您选择的虚假值不会碰巧作为文件系统上的有效路径存在。 /dev/null
可能是一个选项,具体取决于您的环境。
我在我的 C++ 应用程序中使用 openssl 库。我发现了如何忽略 OPENSSL_CONF
环境变量。可以通过指定我自己的配置文件来实现:
OPENSSL_config("openssl.cnf");
但是 OPENSSL_ENGINES
环境变量呢?在我的应用程序中如何忽略它的价值?如何防止从该路径加载引擎?
我查看了 openssl 来源。默认情况下有OPENSSL_ENGINES
变量读取,没有任何条件。
...
if ((load_dir = getenv("OPENSSL_ENGINES")) == 0)
load_dir = ENGINESDIR;
...
OpenSSL 似乎没有公开忽略该环境变量的正确方法。作为解决方法,您可以在调用 ENGINE_by_id()
之前自行将该环境变量设置为某个虚假值,如下所示:
putenv("OPENSSL_ENGINES=/dev/null");
您必须小心一点,您选择的虚假值不会碰巧作为文件系统上的有效路径存在。 /dev/null
可能是一个选项,具体取决于您的环境。