注意:这不是关于让Apache接受入站SSL连接的问题。
我有一个Apache模块需要进行出站SSL连接。当它尝试连接时,会出现以下错误:
无法发送事件:OpenSSL库报告了一个错误:错误:14090086:SSL例程: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或任何证书文件。
更新2:关于我如何创建https请求-我从我的自定义Apache模块内部发出请求。我的模块.so是使用Rust编写的,因此连接代码基本上如下:
在mod_mine.so中:
我有一个Apache模块需要进行出站SSL连接。当它尝试连接时,会出现以下错误:
无法发送事件:OpenSSL库报告了一个错误:错误:14090086:SSL例程: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或任何证书文件。
更新2:关于我如何创建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