Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自编译的OpenSSL包在CentOS 7上出现证书错误 我在CITOS/ReHAT 7.7环境下开发了一个C++ HTTP/HTTPS客户端应用程序,该操作系统附带了代码> OpenSSL 1.0.2K-FIPS。但我的应用程序至少需要openssl1.1.1。因此,我从源代码编译了OpenSSL 1.1.1f_C++_Ssl_Https_Openssl_Client - Fatal编程技术网

自编译的OpenSSL包在CentOS 7上出现证书错误 我在CITOS/ReHAT 7.7环境下开发了一个C++ HTTP/HTTPS客户端应用程序,该操作系统附带了代码> OpenSSL 1.0.2K-FIPS。但我的应用程序至少需要openssl1.1.1。因此,我从源代码编译了OpenSSL 1.1.1f

自编译的OpenSSL包在CentOS 7上出现证书错误 我在CITOS/ReHAT 7.7环境下开发了一个C++ HTTP/HTTPS客户端应用程序,该操作系统附带了代码> OpenSSL 1.0.2K-FIPS。但我的应用程序至少需要openssl1.1.1。因此,我从源代码编译了OpenSSL 1.1.1f,c++,ssl,https,openssl,client,C++,Ssl,Https,Openssl,Client,我的编译配置 ./Configure linux-x86_64 enable-ec_nistp_64_gcc_128 -Wl,-rpath=/usr/local/lib64 --prefix=/usr/local --openssldir=/usr/local 问题从这里开始 我使用新的OpenSSL结果发出的任何请求都使用验证返回代码:20(无法获取本地颁发者证书)。我花了一些时间切换HTTP客户端C++,这是一个非常累人的过程,只发现问题是OpenSSL本身。 经过长时间的研究,我目前使用

我的编译配置

./Configure linux-x86_64 enable-ec_nistp_64_gcc_128 -Wl,-rpath=/usr/local/lib64 --prefix=/usr/local --openssldir=/usr/local
问题从这里开始

我使用新的OpenSSL结果发出的任何请求都使用
验证返回代码:20(无法获取本地颁发者证书)
。我花了一些时间切换HTTP客户端C++,这是一个非常累人的过程,只发现问题是OpenSSL本身。

经过长时间的研究,我目前使用的HTTP客户端在其repo中共享了一个ca包。把它纳入我的项目解决了这个问题

或者使用命令行

openssl s_client -connect example.com:443 -CAfile ./ca-bundle.crt
这一切似乎都很荒谬,在我开发HTTP客户端的经验中,我以前从未做过类似的事情。因此,我的问题是:

  • 这是CentOS 7的问题吗
  • 我在编译OpenSSL时出错了吗?(随后)
注意:使用
命令行设置证书路径(“/etc/ssl/certs/ca bundle.crt”)
也可以工作(我花了很长时间才意识到),但我以前从未手动执行过,因此请原谅我的无知

谢谢你抽出时间

编辑:借助一些代码

const char* dir = getenv(X509_get_default_cert_dir_env());

if (!dir)
    dir = X509_get_default_cert_dir();

cout << dir << endl;
const char*dir=getenv(X509_get_default_cert_dir_env());
如果(!dir)
dir=X509_get_default_cert_dir();

库特1。二号。很可能。@SamVarshavchik我共享了我的编译脚本,这是一个简短的脚本。你能告诉我哪里出了错吗?关于stackoverflow的所有问题都必须包括问题本身的所有相关信息。外部链接可以随时停止工作,使问题变得毫无意义。我确信openssl的配置脚本必须能够指定证书包的路径。我必须查一下,但这应该只是正确设置的问题。@SamVarshavchik谢谢你的输入,我共享的链接与问题的陈述并不完全相关。它只是表示我使用了一个外部ca包文件。至于汇编问题,我看了一遍,但没有提到这一点。我花了很长时间才弄明白这个问题。现在我只想找到一种通用的方法来防止这个问题,这似乎是关于在我的应用程序中添加相关代码,而不是篡改OpenSSL。有帮助吗?
const char* dir = getenv(X509_get_default_cert_dir_env());

if (!dir)
    dir = X509_get_default_cert_dir();

cout << dir << endl;