Moin moin allerseits,
wir konnten das Problem zwischenzeitlich beheben.
Das Problem ist, dass wenn die Intermediate CA gemäß der
Anleitung eingerichtet wird, /etc/opsi/ssl/opsi-ca-cert.pem
nur den Public Key der Intermediate CA enthält. Wenn dann Anfragen an den Server über HTTPS gestellt werden, verifiziert opsi die erhaltenen Zertifikate. Allerdings nutzt opsi nur die Datei opsi-ca-cert.pem als Trust Store (opsi-packag-updater -l 9 list --packages):
Code: Alles auswählen
ca_cert_file: '/etc/opsi/ssl/opsi-ca-cert.pem', exists: True, verify_flags: [<ServiceVerificationFlags.STRICT_CHECK: 'strict_check'>], session.verify: '/etc/opsi/ssl/opsi-ca-cert.pem', verify: '/etc/opsi/ssl/opsi-ca-cert.pem' (opsiservice.py:739)
Allerdings fehlt dort dann das Zertifikat des Issuers der Intermediate CA, da diese (gemäß Anleitung) nur im Systemzertifikatsspeicher abgelegt wurde. Nachdem zusätzlich der Public Key der Root-CA zu /etc/opsi/ssl/opsi-ca-cert.pem hinzugefügt wurde, funktionieren die Anfragen nun.
Hier müsste also entweder die Dokumentation angepasst werden, dass entsprechend ein kombiniertes Zertifikat aus Public Key von Root und Intermediate CA unter /etc/ssl/opsi/opsi-ca-cert.pem abgelegt werden muss oder ggf. kann opsiservice.py erweitert werden, sodass auf den Systemzertifikatsspeicher zurückgegriffen wird, wenn opsi als Intermediate CA betrieben wird. Eine entsprechende Änderung in
python-opsi-common/opsicommon/client/opsiservice.py könnte ungefähr so aussehen:
Code: Alles auswählen
else:
if ca_bundle: # ca_bundle set via REQUESTS_CA_BUNDLE environment variable
self._session.verify = ca_bundle
elif self._ssl_trusted_certs: # ssl-trusted-certs from opsiconfd.conf
self._session.verify = self._ssl_trusted_certs
elif self._ca_cert_file:
Also entsprechend die bereits abgefragte Umgebungsvariable REQUESTS_CA_BUNDLE nutzen, wenn gesetzt und dann die ssl-trusted-certs Einstellung.