gpt4 book ai didi

apache - 我如何让 Apache2 httpd 使用 ubuntu 的 CA 证书从 Apache 出站 SSL 连接?

转载 作者:太空宇宙 更新时间:2023-11-03 12:43:51 25 4
gpt4 key购买 nike

请注意,这不是关于让 apache 接受入站 SSL 连接的问题。

我有一个需要建立出站 SSL 连接的 apache 模块。当它尝试时,它会收到此错误:


发送事件失败:OpenSSL库报错:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:s3_clnt.c:1269:

这表明 apache 正在使用的 SSL 库不知道我的模块正在尝试连接的服务器的(有效)证书。

我运行的 ubuntu 系统上的 CA 证书很好,知道这个下游证书,openssl s_client 告诉我一切正常。

我如何告诉 Apache2 使用 ubuntu 的系统 CA 证书来使出站连接正常工作?

更新 - 我做了一个 strace -e open httpd -X 来查看它试图从哪里加载证书。我看到 apache 打开 libssl.so,但后来我什至尝试打开通常的 ssl.cnf 或任何证书文件也看不到它。

截断了无用的 strace 输出

update2:至于我是如何创建 https 请求的——我是从我的自定义 apache 模块中发出请求的。我的模块 .so 是用 Rust 编写的,所以连接代码基本上是这样的:

在 mod_mine.so 中:

use hyper::Client;
use hyper_tls::HttpsConnector;
use tokio_core::reactor::Core;

let mut core = Core::new()?;
let handle = core.handle();
let client = Client::configure()
.connector(HttpsConnector::new(4, &handle)?)
.build(&handle);

//actually a POST, but this gets the same error
let request = client.get("https://saas.mycompany.io".parse()?);
let result = core.run(request)?;
... //process result

最佳答案

我找到了一个有效的解决方案,但我不确定它是否是最佳的。

openSSL 采用环境变量 SSL_CERT_FILE。我可以在我的 apache 模块源代码中设置它。

use std::env;
let cert_file = figure_out_cert_path(); //on ubuntu: /etc/ssl/certs/ca-certificates.crt
env::set_var("SSL_CERT_FILE", cert_file);

关于apache - 我如何让 Apache2 httpd 使用 ubuntu 的 CA 证书从 Apache 出站 SSL 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47445460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com