Uwaga: to nie jest pytanie o to, czy apache akceptuje przychodzące połączenia SSL.W jaki sposób mam serwer httpd Apache2 używać certyfikatu CA ubuntu do wychodzących połączeń SSL z Apache?
Mam moduł apache, który musi wykonywać wychodzące połączenia SSL. Kiedy stara się, robi ten błąd:
Failed to send events: The OpenSSL library reported an error: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:s3_clnt.c:1269:
ten wskazujący bibliotekę SSL, który używa apache nie wie o (ważnego) certyfikatu serwera, że mój moduł próbuje się połączyć .
Certyfikat CA na moim systemie ubuntu, w którym to działa, jest w porządku, wie o tym certyfikacie, openssl s_client
mówi mi, że wszystko jest w porządku.
W jaki sposób mogę nakazać serwerowi Apache2 korzystanie z certyfikatu CA systemu Ubuntu do wykonywania połączeń wychodzących?
aktualizacja - Zrobiłem strace -e open httpd -X
, aby zobaczyć, gdzie próbował załadować certyfikaty. Widzę apache otwierający libssl.so, ale nie widzę nawet próby otwarcia zwykłego pliku ssl.cnf lub jakiegokolwiek pliku certyfikatu.
snipped useless strace output
Update2: w jaki sposób tworzę żądanie https - Robię żądania od wewnątrz mojego modułu zwyczaj apache. Mój moduł .so jest napisane w Rust, więc kod gra wygląda w zasadzie jak:
w 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
Budujesz moduł niestandardowy lub używasz istniejącego modułu? Czy potrafisz nazwać ten moduł? –
@ TarunLalwani - jest to moduł niestandardowy. Po prostu wywołuje wywołania https. Po uruchomieniu samodzielnym działa dobrze, używając libssl z Ubuntu. Z jakiegoś powodu nie działa wewnątrz apache. – marathon
Możliwe, że próbne repozytorium git z minimalnym odtwarzalnym przykładem? –